Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!
我的博客:<但凡.
我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》
欢迎点赞,关注!
1、题目
由二个平方三位数获得三个平方二位数。已知两个平方三位数abc和xyz,其中a、b、c、x、y、z未必是不同的;而ax、by、cz是三个平方二位数。请编程求三位数abc和xyz。 **输出格式要求:"%d and %d\n" **输出提示信息:"The possible perfect squares combinations are:\n" 程序运行示例如下: The possible perfect squares combinations are: 400 and 900 841 and 196
2、题解
由两个获得平方数三个两位平方数。我们可以写个循环,存储这个三位数的每一位。然后就是找这三个两位数了。然后使用穷举法,按题里的ax,by,cz这样组合判断这三个数是否满足平方数。
#include<stdio.h>
#include<math.h>
void test(int a[3],int n)
{
int i = 2;//这样可以把百位存在a[0]
while (n)
{
a[i--] = n % 10;
n /= 10;
}
}
int main()
{
int a[3] = { 0 };//存储第一个三位数的各个位
int b[3] = { 0 };//存储第二个三位数的各个位
int i = 0;
int j = 0;
printf("The possible perfect squares combinations are:\n");
for (i = 10;i < 31;i++)
{
for(j=10;j< 31;j++)//这样保证咱们的三位数是平方数
{
test(a, i*i);
test(b, j*j);
if ((sqrt(a[0] * 10 + b[0]) == (int)sqrt(a[0] * 10 + b[0])) &&
(sqrt(a[1] * 10 + b[1]) == (int)sqrt(a[1] * 10 + b[1])) &&
(sqrt(a[2] * 10 + b[2]) == (int)sqrt(a[2] * 10 + b[2])))//如果不是平方数,那他开平方是小数
{
printf("%d and %d\n", i*i, j*j);//注意咱们这不break,因为这个数不一定只有一个,咱们不知道有几个
}
}
}
return 0;
}
好了,今天的内容就分享到这,我们下期再见!