题解 | #自守数#
自守数
https://www.nowcoder.com/practice/88ddd31618f04514ae3a689e83f3ab8e
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
int res = 0;
bool flag = false;
vector<int> ans(1, 0);
vector<int> nums1(10, -1);
vector<int> nums2(5, -1);
for(int i = 1; i <= n; ++i){
int t = i;
int temp = i * i;
for(int i = 0; t > 0; ++i){
nums1[i] = temp % 10;
nums2[i] = t % 10;
if(nums1[i] != nums2[i]){
flag = false;
break;
}
flag = true;
temp /= 10;
t /= 10;
}
if(flag){
ans.push_back(i);
}
}
cout << ans.size() << endl;
// for(auto i : ans){
// cout << i << " ";
// }
return 0;
}
// 64 位输出请用 printf("%lld")