代码:
#include <stdio.h>
int main(){
//n以内的自守数个数
int n;
int count=0;
int i,j,flag=0;
while(scanf("%d",&n)!=EOF){
for(i=1;i<=n;i++){
j=i;
int b= j*j;
while(j>0){
//核心思路:求余判断余数是否相等,用flag标记
if(j%10==b%10){
j/=10;
b/=10;
flag=1;
}
else{
flag=0;
break;
}
}
if(flag==1) {
count++;
printf("%d\n",i);//输出每个自守数
}
}
printf("%d\n",count);//输出自守数个数
}
}
输出结果示例:
2000
1
5
6
25
76
376
625
7