51.鸡兔同笼问题
分析:小学生数学问题。设鸡为a个,兔为b个,建立二元一次方程组:
可以解的: a=(4n-m)/2, b=n-a。
但是要考虑无解的情况。当解出的a,b是小于0或者腿数位奇数的时候是不符合实际情况的。
#include<stdio.h>
int main()
{
int n, m;
int a = 0;
int b = 0;
scanf("%d %d", &n, &m);
a = (4 * n - m) / 2;
b = n - a;
if (m % 2 == 1 || a < 0 || b < 0)
printf("No answer\n");
else
printf("%d %d", a, b);
return 0;
}
52.输出所有形如aabb的完全平方数
判断一个数是不是完全平方数的方法?
方法一:
int m = floor(sqort(n)+0.5);//n是需要判断的数
if(m*m==n)
printf("是完全平方数");
为什么要加个0.5?
以为在大量计算的时候,可能会发生误差,由于误差可能会使1变为0.99999999999999999,但是floor会使0.9999999999的结果为0。为了不让这种情况发生,我们加上0.5,改为四舍五入。这样就可以避免以上的情况发生。
根据方法一写出的代码:
#include<stdio.h>
#include<math.h>
int main()
{
for (int i = 1; i <= 9; i++)
{
for (int j = 0; j <= 9; j++)
{
int n = i * 1100 + j * 11;
int m = floor(sqrt(n) + 0.5);
if (m * m == n)
printf("%d是完全平方数\n",n);
}
}
return 0;
}
方法二:
int a = n/100;//n是需要判断的数,n/100就是前两位的数字
int b = n%100;//n%100就是后两位数字
if(a/10==a%10&&b/10==b%10)
printf("是完全平方数");
根据方法二写出的代码:
#include<stdio.h>
int main()
{
for (int i = 1; ; i++)
{
int n = i * i;
if (n < 1000)
continue;
if (n > 9999)
break;
int a = n / 100;
int b = n % 100;
if (a / 10 == a % 10 && b / 10 == b % 10)
printf("%d是完全平方数",n);
}
return 0;
}
53.3n+1问题
#include<stdio.h>
int main()
{
long long n = 0;
int count = 0;
scanf("%lld", &n);
while (1)
{
if (n % 2 == 1)
{
if (n == 1)
break;
else
{
n = 3 * n + 1;
count++;
}
}
else
{
if (n == 1)
break;
else
{
n = n / 2;;
count++;
}
}
}
printf("%d\n", count);
return 0;
}
54.输出100~999的所有水仙花数
#include<stdio.h>
int main()
{
for (int i = 100; i < 1000; i++)
{
int a = i / 100;
int b = (i / 10)%10;
int c = i % 10;
if (i == a * a * a + b * b * b + c * c * c)
printf("%d\n",i);
}
return 0;
}
55.韩信点兵
#include<stdio.h>
int main()
{
int a, b, c;
int sum = 0;
scanf("%d%d%d", &a, &b, &c);
for (int i = 10; i <= 100; i++)
if (i % 3 == a && i % 5 == b && i % 7 == c)
{
sum = i;
break;
}
if (sum < 0)
{
printf("No answer\n");
}
else
{
printf("%d\n", sum);
}
return 0;
}