平方末尾
能够表示为某个整数的平方的数字称为“平方数”
比如,25,64
虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。
因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个。
所以,4325435332必然不是平方数。
如果给你一个2位或2位以上的数字,你能根据末位的两位来断定它不是平方数吗?
请计算一下,一个2位以上的平方数的最后两位有多少种可能性?
注意:需要提交的是一个整数,表示2位以上的平方数最后两位的不同情况数。
不要填写任何多余内容(比如,说明解释文字等)
———————我是萌萌哒的分割线,以下是代码————————————————————
解释:我是从一个起始值 i 开始递减 一个一个判断结果有多少个,起始值为100时有7个,1000时有19个,10000往上时都是22个,最后断定结果是22。
另小弟水平有限,只想到了这种粗略的方法,如果有更严密的方法或解释,望不吝赐教。谢过各路大神。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int exit_or[10000000];
int IsSquare(int n)
{
int i;
for(i=1; n>0; i+=2)
{
n-=i;
}
if(n==0)
return 1;
else
return 0;
}
int main()
{
memset(exit_or,0,sizeof(exit_or));
int i=100;
int e_lable=0;
printf("计算中···· ");
while(i>15)
{
// printf("%d\n",i);
int a=i%10;
if(a==0||a==1||a==4||a==5||a==6||a==9)
{
if(IsSquare(i))
{
int o=i%100;
int ok=1;
for(int q=0;q<e_lable;q++)
{
if(exit_or[q]==o)
{
ok=0;break;
}
}
if(ok)
{
exit_or[e_lable++]=o;
}
}
}
i--;
}
printf("%d",e_lable);
return 0;
}