AOJ2101
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2101
解法:線形に調べるだけ
コーナーケースがN=1の場合というのは恐れ入った。流石UT
N=1をどう弾いてやるかと思ったが結局最後の出力で無理やりdeficientにする方法で落ち着いた。
#include <cstdio> #define i64 long long using namespace std; int main(){ i64 r,n; while(scanf("%lld",&n),n){ r=0LL; for(i64 i=1LL;i*i<n;i++){ if(!(n%i)){ r+=i;if(i>1)r+=n/i; } } // printf("%d %d\n",n,r); if(r>n){ puts("abundant number"); } else if(r==n&&n!=1){ puts("perfect number"); } else{ puts("deficient number"); } } }