思路:模拟
根据题意,我们需要求出给定  的所有除自己以外的约数并求和,最后判断元素和 
 是否等于给定元素 
,由于给定 
 的范围最大到 
,所以找约数时找到 
 即可。特别地,为了保证 
 为完全平方数时不重复计算平方根,在加和时需要特判。
代码:
#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号