ZeroJudge C203: DPA Numbers I

同題:UVa 13185 – DPA Numbers I

一個整數 B 如果可以被另一個整數 A 整除 (在這裡 A > B),我們稱 B 是 A 的一個因數。

Perfect Number 是一個正整數並且等於其所有因數 (不包含它自己) 的和。

例如:6 和 28 都是 Perfect Number。因為 6 = 1 + 2 + 3,28 = 1 + 2 + 4 + 7 + 14。

如果一個正整數不是 Perfect,那他就是 Deficient 或者是 Abundant,根據其所有因數的和是小於或大於這個數本身。因此,9 是 Deficient 因為 1 + 3 < 9。而 12 是 Abundant 因為 1 + 2 + 3 + 4 + 6 > 12。

請寫一個程式求出某一個數是 Perfect、Deficient、或者 Abundant。

範例測資

範例輸入範例輸出
輸入的第一列有一個正整數t代表以下有幾筆測資。(1 <= T <= 500)
每筆測資一列,有一個正整數 N(2 <= N <= 1000)
對每筆測資輸出一列,輸出 N 是 Perfect、Deficient、或者 Abundant。
10
5
6
16
18
21
28
29
30
40
43
deficient
perfect
deficient
abundant
deficient
perfect
deficient
abundant
abundant
deficient

解題思路

使用 For迴圈 判斷每一個數字的因數,如果 N 除以目前迴圈跑到的數字 (i) 之餘數等於0,i 就是N的因數。進行加總之後判斷是小於、等於、還是大於。

範例程式碼-ZeroJudge C203: DPA Numbers I

#include <iostream>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int T;
    cin >> T;
    for (int i = 0; i<T; i++)
    {
        int N;
        cin >> N;
        int count = 0;
        for (int j = 1; j<N; j++)
        {
            if (N % j == 0)
            {
                count += j;
            }
        }
        if (count == N) cout << "perfect\n";
        else if (count > N) cout << "abundant\n";
        else cout << "deficient\n";
    }
}

//ZeroJudge C203
//Dr. SeanXD

發佈留言