题目描述
能够表示为某个整数的平方的数字称为“平方数”。比如,25,64
虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。
因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个。
所以,4325435332必然不是平方数。
如果给你一个2位或2位以上的数字,你能根据末位的两位来断定它不是平方数吗?
请计算一下,一个2位以上的平方数的最后两位有多少种可能性?
这道题我刚开始读了贼久的题,以为有关系,结果发现没什么关系。。。。直接遍历2位以上的找出最后两位的个数就行了。当然也是遍历不完的,遍历大多数,大概能把最后两位遍历完就行了,最后答案是22
#include<stdio.h>
int ping(int n)
{
int m;
n = n*n;
m = n%10;
n = n/10;
m += (n%10)*10;
return m;
}
int main()
{
int i,j,a[100],m,s=0,jec;
for(i=10;i<10000;i++) //直接就找了个较大的数来限制
{
m = ping(i); //取最后两位
jec = 1;
for(j=0;j<s;j++)
{
if(m == a[j])
{
jec = 0;
}
}
if(jec == 1) //把最后两位数都存在这个数组里面
{
a[s] = m;
s++;
}
}
printf("%d\n",s);
return 0;
}