题目:
由两个平方三位数获得三个平方二位数。已知两个平方三位数abc,xyz,其中未必是不同的;而ax,by,cz是三个平方二位数(首位数字可以为0.),请编程三位数abc,和xyz。
示例答案:
400 and 900
841 and 196
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void isFind(int *p1,int *p2); //判断是否是符合题意的函数
int main()
{
int a[30];
for(int i=10;i<=32;i++) //把三位平方数找出来
{
a[i-10]=pow(i,2);
}
for(int i=0;i<22;i++)
{
for(int j=0;j<=22;j++)
{
isFind(a+i,a+j); //三位平方数的每组遍历。
}
}
return 0;
}
void isFind(int *p1,int *p2)
{
int a[3],b[3],t1=*p1,t2=*p2,count=0;
for(int i=0;i<3;i++)
{
a[i]=t1%10; //把每组的两个三位数的每一位数字保存到数组里。
b[i]=t2%10;
t1/=10;
t2/=10;
for(int j=0;j<=10;j++)
{
if(a[i]*10+b[i]==pow(j,2))
{
count++; //判断是否为三位数同时为平方数
}
}
}
if(count==3)
{
printf("%d,%d\n",*p1,*p2);
}
}
这个不算是每日100题里的经典题目,我今天刷题刷到了,感觉我写的有点麻烦了。如果可以简化代码的话希望大家指出。
这是输出结果如下