🔗문제 풀러가기
단계별로 풀어보기 단계 9의 3번째 문제이다.
입력받은 수의 약수들을 구해 vector에 저장한 후.
입력받은 수에서 약수들을 빼어 0인지 판별하여 완전수인지 판별하였다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int input;
vector<int> inputs;
while (true)
{
cin >> input;
inputs.push_back(input);
if (input == -1) { break; }
}
for (int i = 0; i < inputs.size(); i++)
{
if (inputs[i] == -1) { return 0; }
vector<int> divisors;
int temp = inputs[i];
for (int j = 1; j <= temp; j++)
{
if (temp % j == 0 && j != temp)
{
divisors.push_back(j);
}
}
for (int j = 0; j < divisors.size(); j++)
{
temp -= divisors[j];
}
if (temp == 0)
{
cout << inputs[i] << " = ";
for (int j = 0; j < divisors.size() - 1; j++)
{
cout << divisors[j] << " + ";
}
cout << divisors[divisors.size() - 1] << endl;
}
else
{
cout << inputs[i] << " is NOT perfect." << endl;
}
}
}
좋은 정보 감사합니다