自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n以内的自守数的个数
我写的程序:
#include "stdio.h"
int main(void){
int num,i,js=0,cnt=0,tol,ys;
while(scanf("%d",&num)==1){
for(i=0;i<=num;i++){
js=i*i;
tol=10;
//思路是平方数减自守数能被自然数的10的位数+1方整除,我们需要得到这个数
while((i/tol)>=1){
tol=tol*10;
}
ys=(js-i)%tol;
if(ys==0){
cnt++;
//printf("%d\n",i);
}
}
printf("%d\n",cnt);
}
return 0;
}
int main(void){
int num,i,js=0,cnt=0,tol,ys;
while(scanf("%d",&num)==1){
for(i=0;i<=num;i++){
js=i*i;
tol=10;
//思路是平方数减自守数能被自然数的10的位数+1方整除,我们需要得到这个数
while((i/tol)>=1){
tol=tol*10;
}
ys=(js-i)%tol;
if(ys==0){
cnt++;
//printf("%d\n",i);
}
}
printf("%d\n",cnt);
}
return 0;
}
保存调试结果
出错用例自测结果:
全部评论
(1) 回帖