依题意,只需求出所有n的约数再进行判断。
不能直接O(n)扫描,显然约数是一对一对的(注意特判完全平方数),只需算小于的那一半约数即可
#include<cstdio>
#include<cmath>
using namespace std;
long long n,lim;
long long ans;
int main()
{
scanf("%lld",&n);lim=sqrt(n);
for(int i=2;i<=lim;++i)if(n%i==0)ans+=i+n/i;
++ans;if(lim*lim==n)ans-=lim;
if(ans==n)puts("Pure");
else if(ans>n)puts("Late");
else puts("Early");
return 0;
}



京公网安备 11010502036488号