25^2=625,可以发现625%100=25,5776%100=76,所以我们有两个条件来判断是否满足自守数。1、ixi=n;2、从k=10开始到ixi之间,其中看的步长是10,即k=kx10。判断是否有ixi%k=i。满足这两个条件则满足自守数。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin >> n){
int cnt = 0, i=0,rst = 0;
while(i<=n){
for(int j=10; j<=i*i; j *= 10){
rst = i*i%j;
if(rst == i) cnt++;
}
i++;
}
cout << cnt+2 << endl;
}
}
京公网安备 11010502036488号