문제풀이/백준
[C++] 백준 - 2231 : 분해합
orubt
2020. 11. 6. 16:46
반응형
문제
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
풀이
분해합은 생성자보다 항상 크기 때문에 1부터 분해합-1까지의 생성자가 분해합을 만들 수 있는지 확인하면 된다.
#include <cstdio>
#include <string>
using namespace std;
int sum(int n){
string tmp = to_string(n);
for(int i = 0; i < tmp.size(); ++i)
n += (tmp[i]-'0');
return n;
}
int main(void){
int n;
scanf("%d", &n);
for(int i = 1; i < n; ++i){
if(sum(i) == n){
printf("%d\n", i);
return 0;
}
}
printf("0\n");
return 0;
}
반응형