
코드
#include <iostream>
using namespace std;
int getDecompositionSum(int num) {
int sum = num;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
int main() {
int N;
cin >> N;
for (int i = 1; i < N; i++) {
if (getDecompositionSum(i) == N) {
cout << i << endl;
return 0;
}
}
cout << 0 << endl;
return 0;
}
코드 설명
#include <iostream> // 입출력을 위한 헤더파일
using namespace std; // std:: 생략 가능하게 해줌
// 특정 수 num의 분해합을 구하는 함수
int getDecompositionSum(int num) {
int sum = num; // 시작은 자기 자신부터
while (num > 0) { // 자릿수 하나씩 더함
sum += num % 10; // 일의 자리 더함
num /= 10; // 다음 자릿수로 이동
}
return sum; // 분해합 반환
}
int main() {
int N;
cin >> N; // 목표 숫자 입력 받음
// 가능한 모든 생성자 후보를 탐색 (1부터 N-1까지)
for (int i = 1; i < N; i++) {
if (getDecompositionSum(i) == N) { // 분해합이 N이면
cout << i << endl; // 생성자 출력
return 0; // 프로그램 종료 (가장 작은 생성자 찾았으므로)
}
}
// 생성자가 없는 경우
cout << 0 << endl;
return 0;
}