题解 | #自守数#
自守数
https://www.nowcoder.com/practice/88ddd31618f04514ae3a689e83f3ab8e
使用尾部字符遍历判断是否相等来获得自守数。
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
bool Isrepe(int k) {
int k2k = pow(k, 2);
string s1 = to_string(k);
string s2 = to_string(k2k);
int n1 = s1.size() - 1, n2 = s2.size() - 1;
while (n1 >= 0) {
if (s1[n1] != s2[n2]) {
break;
}
n1--;
n2--;
}
if (n1 < 0) return true;
else return false;
}
int main() {
int n;
while (cin >> n) {
int ans = 0;
for (int i = 0; i <= n; i++) {
if (Isrepe(i)) ans++;
}
cout << ans << endl;
}
return 0;
}

