※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 9506번 문제인 약수들의 합이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/9506
9506번: 약수들의 합
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
www.acmicpc.net
이 문제는 주어진 수가 완전수인지 확인하고, 완전수라면 약수의 합의 형태를, 아니라면 그렇지 않다는 문장을 출력하는 문제이다.
10만 미만의 완전수는 6, 24, 496, 8128 네 개 뿐이므로, 간단히 조건문으로 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int x; cin >> x;
while (x != -1) {
if (x == 6) cout << "6 = 1 + 2 + 3\n";
else if (x == 28) cout << "28 = 1 + 2 + 4 + 7 + 14\n";
else if (x == 496) cout << "496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248\n";
else if (x == 8128) cout << "8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064\n";
else cout << x << " is NOT perfect.\n";
cin >> x;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 2557 // C++] Hello World (0) | 2021.05.01 |
---|---|
[BOJ 9498 // C++] 시험 성적 (0) | 2021.05.01 |
[BOJ 10718 // C++] We love kriii (0) | 2021.05.01 |
[BOJ 2741 // C++] N 찍기 (0) | 2021.05.01 |
[BOJ 21598 // C++] SciComLove (0) | 2021.05.01 |