什么是自守数呢,就是一个数n,那么n*n中的尾部含有n,这个数就是自守数
通过规律就可以知道尾部是0 1 5 6那么这个数一定就是自守数
下面实现一下代码:
#include <iostream>
#include <string>
using namespace std;
int isTrue(int n)
{
int ans=0;
for(int i=0;i<=n;i++)
{
if((i%10==0)||(i%10==1)||(i%10==5)||(i%10==6))
{
long j=i*i;
string s1=to_string(j);
string s2=to_string(i);
int pos=s1.size()-s2.size();
if(s1.find(s2,pos)!=-1)
{
ans++;
}
}
}
return ans;
}
int main(){
//尾数是0 1 5 6 的是自守数
//
int n;
while(cin>>n)
{
cout<<isTrue(n)<<endl;
}
return 0;
}
如有错误,多多指教!