要找出自守数,必须找到它的特点:
- 自首数的 最后一位 除0外必须为 1、5、6;
- 如果最后一位为0,那只有一个数成立,那就是 0本身。
基于以上所得到的num,我们只需要验证平方的最后几位是否等于num即可.
#include<iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
int ans=0;
for(int i=1;i<=n;i++){
if(i%10==1||i%10==5||i%10==6){ //找到可能成为自守数的数
int temp1=i, temp2=i*i;
while(temp1){//验证后几位
if(temp2%10!=temp1%10) break;
temp1/=10;
temp2/=10;
}
if(temp1==0) ans++;
}
}
cout<<ans+1<<endl;//带上0
}
return 0;
}
京公网安备 11010502036488号