题解 | #自守数#
自守数
https://www.nowcoder.com/practice/88ddd31618f04514ae3a689e83f3ab8e
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int a, b=0;
while (scanf("%d ", &a) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
for(int i=0;i<=a;i++)
{
int pf=i*i;
if(i%10==0||i%10==5||i%10==6||i%10==1)
{
char chi[10000]={0},ch[10000]={0};
sprintf(chi, "%d",i);
sprintf(ch, "%d",pf);
int ilen=strlen(chi);
int len=strlen(ch);
int k=0;
for(int j=0;j<ilen;j++)
{
if(chi[j]!=ch[len-ilen+j])
{
k=1;
break;
}
}
if(k!=1)
b++;
}
}
printf("%d\n", b);
}
return 0;
}