Problem
Solution
숫자 n을 입력받고, 1부터 n까지 숫자를 돌려가면서 n과 나누어 떨어지는 수가 있다면 배열에 저장한다.
그 후 배열에 저장된 수의 합을 구하고, n과 같은지 다른지 조건문으로 예제와 같이 출력하면 된다.
#include "iostream"
#include "vector"
using namespace std;
int main() {
int n, sum = 0;
while (true) {
vector<int> v;
sum = 0;
cin >> n;
if (n == -1) break;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
v.push_back(i);
}
}
for (size_t i = 0; i < v.size(); i++) {
sum += v[i];
}
if (sum == n) {
cout << n << " = ";
for (size_t i = 0; i < v.size(); i++) {
if (i == v.size() - 1) {
cout << v[i];
} else {
cout << v[i] << " + ";
}
}
cout << "\n";
}
else cout << n << " is NOT perfect.\n";
}
}
C++
복사

