题解 | #自守数#
自守数
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; }