题解 | #自守数#
自守数
https://www.nowcoder.com/practice/88ddd31618f04514ae3a689e83f3ab8e
解题思路
将待判断的值先用if来判断是几位数
一位数
两位数
三位数
四位数
五位数
然后在里面分别求出平方以后对应后几位数的值和原始值比较
以76^2 = 5776为例
temp保存 i 的平方
首先判断 i (76)是两位数,然后求temp的两位尾数,也就是temp%100和 i 进行对比,如果正确num++
#include <stdio.h> int main() { int a=0,i=0; int num=1,temp=0; scanf("%d",&a); for(i=1;i<=a;i++) { temp=i*i;//平方 if(i<10) { if(temp%10==i) { num++; continue; } } else if(i>=10&&i<100) { if(temp%100==i) { num++; continue; } } else if(i>=100&&i<1000) { if(temp%1000==i) { num++; continue; } } else if(i>=1000&&i<10000) { if(temp%10000==i) { num++; continue; } } else if(temp%100000==10000) { num++; } } printf("%d",num); return 0; }