题解 | #自守数#
自守数
https://www.nowcoder.com/practice/88ddd31618f04514ae3a689e83f3ab8e
#include <bits/stdc++.h> using namespace std; // 判断参数 n 是否是完全数 // 如果 n 是完全数则返回 true,否则返回false。 bool fun(int n) { // 计算平方数 m => 25 * 25 => 625 int m = n * n; // l 用来算出正好大于 n 的基数,这里n是25那么y就是100 int l = 10; while (l < n) { l *= 10; } // m 625 % y 100 = 25 return m % l == n; } int counter(int n) { int count = 0; for (int i = 0;i <= n;i++) { if (fun(i)) { count++; } } return count; } int main() { int n; while (cin >> n) { // 注意 while 处理多个 case cout << counter(n) << endl; } }