백준 문제풀이

9506 번 : 약수들의 합

하다블 2023. 4. 26. 19:57
반응형

문제는 다음과 같습니다.

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