View
알고리즘 분류: 수학, 구현, 정수론
문제 링크: https://www.acmicpc.net/problem/9506
【 풀이 】
수를 하나 입력받고, 그 수의 약수들의 합이 입력 받은 수와 일치하면 그 합을 출력하는 문제이다.
숫자 n을 입력받고, 1부터 n까지 숫자를 돌려가면서 n과 나누어 떨어지는 수가 있다면 배열에 저장한다.
그 후 배열에 저장된 수의 합을 구하고, n과 같은지 다른지 조건문으로 예제와 같이 출력하면 된다.
【 코드 】
#include<iostream>
#include<vector>
using namespace std;
int main(void)
{
while (1)
{
vector<int>measure;
int sum = 0;
int n;
cin >> n;
if (n == -1)
break;
for (int i = 1; i < n; i++)
if (n % i == 0)
measure.push_back(i);
for (int i = 0; i < measure.size(); i++)
sum += measure[i];
if (n == sum)
{
cout << n << " = ";
for (int i = 0; i < measure.size(); i++)
{
if (i == measure.size() - 1)
cout << measure[i];
else
cout << measure[i] << " + ";
}
cout << '\n';
}
else
cout << n << " is NOT perfect.\n";
}
return 0;
}
728x90
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 1676번: 팩토리얼 0의 개수 [C++] (0) | 2023.05.04 |
---|---|
[백준] 1475번: 방 번호 [C++] (0) | 2023.05.03 |
[백준] 13241번: 최소공배수 [C++] (0) | 2023.05.02 |
[백준] 11718번: 그대로 출력하기 [C++] (0) | 2023.04.30 |
[백준] 1427번: 소트인사이드 [C++] (0) | 2023.04.28 |
reply