题解 | #自守数#
自守数
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;
}
查看14道真题和解析