본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 6491 : Perfection

반응형

 

#include <bits/stdc++.h>
using namespace std;

vector <int> getDivisor(int x) {
    vector <int> div;
    for(int i = 1; i < x; i++){
        if(x % i == 0) div.push_back(i);
    }
    return div;
}

string getResult(int x){
    int sum = 0;
    vector <int> div = getDivisor(x);
    for(auto d : div) sum += d;
    if(sum == x) return "PERFECT\n";
    if(sum < x) return "DEFICIENT\n";
    return "ABUNDANT\n";
}

int main(){
    while(1){
        int x;
        cin >> x;
        if(!x) break;
        cout << x << ' ' << getResult(x);
    }
}

https://www.acmicpc.net/problem/6491

 

6491번: Perfection

From the article Number Theory in the 1994 Microsoft Encarta: "If a, b, c are integers such that a = bc, a is called a multiple of b or of c, and b or c is called a divisor or factor of a. If c is not 1, b is called a proper divisor of a. Even integers, wh

www.acmicpc.net

구현문제였습니다

📕 풀이방법

📔 입력 및 초기화

while loop를 수행합니다. 수 x를 선언해 입력받습니다. x가 0이면 while loop를 탈출해줍니다.

📔 풀이과정

 getResult함수를 수행합니다. 1. 내분에서 x의 약수를 vector로 반환하는 getDivisor함수를 수행합니다. 2. 조건에 따라 정답 문자열을 반환합니다.

📔 정답출력

반환된 정답 문자열을 출력합니다.


📕 Code