반응형
문제
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;
}
반응형
'문제풀이 > 백준' 카테고리의 다른 글
[C++] 백준 - 7526 : 나이트의 이동 (0) | 2020.11.18 |
---|---|
[C++] 백준 - 3085 : 사탕 게임 (0) | 2020.11.06 |
[C++] 백준 - 1697 : 숨바꼭질 (0) | 2020.05.01 |
[C++] 백준 - 13458 : 시험 감독 (0) | 2020.04.30 |
[C++] 백준 - 17070 : 파이프 옮기기 1 (0) | 2020.04.15 |