题解 | #自守数#
自守数
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")