https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
num이 0이 아닐 때까지 10으로 나눈 나머지 값을 sum에 더하고,
10으로 나눈 몫을 num에 다시 넣어주는 것을 반복한다.
즉, num의 각 자릿수를 더하는 것이다.
그다음 각 자릿수를 더한 값과 i 값이 입력받은 n이라면 생성자를 구한 것이기 때문에
result에 i의 값을 넣어준다.
이 과정을 0부터 입력받은 숫자까지 차례대로 하다가
생성자가 발견되면 이를 출력하고 종료한다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, result = 0;
cin >> n;
for (int i = 0; i < n; i++) {
int num = i;
int sum = 0;
while (num != 0) {
sum += num % 10;
num /= 10;
}
if (sum + i == n) {
result = i;
break;
}
}
cout << result;
return 0;
}
'코딩테스트 > Baekjoon' 카테고리의 다른 글
[백준 #1476] 날짜 계산 (C++) (0) | 2021.09.18 |
---|---|
[백준 #2309] 일곱 난쟁이 (C++) (0) | 2021.09.15 |
[백준 #2164] 카드2 (C++) (0) | 2021.09.10 |
[백준 #5565] 영수증 (C++) (0) | 2021.09.10 |
[백준 #6603] 로또 (C++) (0) | 2021.09.09 |