题解 | #自守数#
自守数
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;
}
}
