반응형
문제는 다음과 같습니다.
https://www.acmicpc.net/problem/9506
9506번: 약수들의 합
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
www.acmicpc.net
풀이 코드는 다음과 같습니다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
while(true)
{
vector<int>v;
int n;
cin>>n;
if(n==-1)
break;
int total{0};
for(int j{1};j<n;j++)
{
if(n%j==0)
{
total+=j;
v.push_back(j);
}
}
if(n!=total)
{
cout<<n<<" is NOT perfect.\n";
}
else
{
cout<<n<<" = ";
for(int i{0};i<v.size()-1;i++)
{
cout<<v[i]<<" + ";
}
cout<<v[v.size()-1]<<"\n";
}
}
}
약수를 구하는 과정은 동일하며 약수를 구할 때 total을 계산하여 완전수인지 확인할 수 있습니다.
반응형
'백준 문제풀이' 카테고리의 다른 글
1085 번 : 직사각형에서 탈출 (0) | 2023.04.27 |
---|---|
2581 번 : 소수 (0) | 2023.04.27 |
2501 번 : 약수 구하기 (0) | 2023.04.26 |
5086 번 : 배수와 약수 (0) | 2023.04.26 |
10757 번 : 큰 수 A+B (0) | 2023.04.26 |