알고리즘/문제풀이
2231 - 분해합(백준)
WhNi
2024. 6. 5. 12:13
https://www.acmicpc.net/problem/2231
#include <iostream>
using namespace std;
// 분해합 과정이 복잡할거 같아서 함수로 따로 설정
int Sum(int num)
{
int sum = num;
while (num > 0)
{
// 자릿수 나머지 값
sum += num % 10;
// 자릿수 빼기
num /= 10;
}
return sum;
}
int main()
{
int N;
cin >> N;
// 없으면 0 출력해야해서 0부터 시작
int result = 0;
// 각 자리수의 가장 큰 숫자9에, 가장 큰 자릿수 1,000,000 의 6 을 곱한 값으로 시작값 구하기
int start = N - 54;
// 시작값으로부터 입력값 까지 돌면서, 가장 작은 생성자 찾기
for (int M = start; M < N; M++)
{
// 분해합 결과값이 입력값과 같으면
if (Sum(M) == N)
{
// 가장 작은 생성자
result = M;
break;
}
}
cout << result << "\n";
return 0;
};