思路:模拟
根据题意,我们需要求出给定 的所有除自己以外的约数并求和,最后判断元素和
是否等于给定元素
,由于给定
的范围最大到
,所以找约数时找到
即可。特别地,为了保证
为完全平方数时不重复计算平方根,在加和时需要特判。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ll n;
cin >> n;
ll sum = 0;
for(int i = 2; i <= n / i; i++) {
if(n % i == 0) {
if(i * i == n) {
sum -= i;
}
sum += i;
sum += n / i;
}
}
if(sum + 1 == n) {
cout << "Pure";
} else if(sum + 1 > n) {
cout << "Late";
} else {
cout << "Early";
}
} 复杂度分析
时间复杂度:
空间复杂度:



京公网安备 11010502036488号