所谓自守数(也称守形数),是指其平方数的低位部分恰为该数本身的自然数。例如:252=625,因此25是自守数。(注:0 和 1 也算自守数。)
请编写程序,输出指定范围内的所有自守数。若指定范围内不存在自守数,则输出None。
输入格式
正整数 a 和 b, 且 a≤b≤10000
输出格式
若 [a,b] 内存在自守数,则按由小到大的顺序输出,每行输出一个自守数;若不存在自守数,则输出None。
输入样例1
10 80
输出样例1
25
76
输入样例2
400 600
输出样例2
None
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
int a,b,i,j,t=0,q;
scanf("%d %d",&a,&b);
int *p;
p = (int*)malloc(sizeof(int));
for(i=a;i<=b;i++)
{ j=1;
while(1)
{
if(i/(int)pow(10,j)==0)
break;
j++;
}
if((int)pow(i,2)%(int)pow(10,j)==i)
{
*(p+t)=i;
t++;
p = (int*)realloc(p,(1+t)*sizeof(int));
}
}
if(t==0)
printf("None");
else
{
for(i=0;i<t;i++)
printf("%d\n",*(p+i));
}
free(p);
return 0;
}