1 #include <iostream> 2 #include <sstream> 3 #include <string> 4 #include <algorithm> 5 #include <vector> 6 using namespace std; 7 8 #define GI ({int _t; scanf("%d", &_t); _t;}) 9 #define FOR(i, a, b) for (int i=a; i<=b; i++) 10 #define REP(i, a) FOR(i, 0, a) 11 template<class T> string toString(T n){ostringstream ost;ost<<n;ost.flush();return ost.str();} 12 int toInt(string s){int r=0;istringstream sin(s);sin>>r;return r;} 13 #define DBGV(_v) { REP(_i, _v.size()) { cout << _v[_i] << "\t";} cout << endl;} 14 15 int factor_count(int num) { 16 if (num == 1) return 0; 17 int res = 1; 18 FOR(i, 2, num/2) { 19 if (num%i==0) res+=i; 20 } 21 return res; 22 } 23 int main() { 24 int num; 25 printf("PERFECTION OUTPUT\n"); 26 while (1) { 27 num = GI; 28 if (num == 0) break; 29 int fcount = factor_count(num); 30 if (fcount == num) { 31 printf("%5d PERFECT\n", num); 32 } 33 else if (fcount > num) { 34 printf("%5d ABUNDANT\n", num); 35 } 36 else if (fcount < num) { 37 printf("%5d DEFICIENT\n", num); 38 } 39 } 40 printf("END OF OUTPUT\n"); 41 return 0; 42 }