백준 9506 약수들의 합 / C++

이유참치·2025년 12월 15일

백준

목록 보기
117/249

문제 : 9506

풀이 point

약수를 모두 구하면 된다. for문을 활용하여 1부터 N-1까지 모두 나눈후 나누었을 때 나머지가 0인 값들만 구해낸다.

코드

//백준 9506, 약수들의 합
#include <iostream>
#include <vector>

std::vector<int> vec;

int main(){

    int n;
    while(true){
        std::cin >> n;
        if(n == -1) break;
        int i{1}; int sum{0};
        while(n > i){
            if(n%i == 0){
                sum += i;
                vec.push_back(i);
            }
            ++i;
        }
        if(sum == n){
            std::cout << n << " = ";
            std::cout << vec[0];
            for(int i{1}; i<vec.size(); ++i){
                std::cout << " + " << vec[i];
            }
            std::cout << '\n';
        }
        else std::cout << n << " is NOT perfect.\n";
        vec.clear();
    }

    return 0;
}
profile
임아리 - 대학생

0개의 댓글