본문 바로가기

ProgramSoliving

백준 : 2231

반응형

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<iostream>
 
using namespace std;
 
int n;
 
int sumofnum(int num) {
 
    int val = 0;
    while (num != 0) {
        val += num % 10;
        num = num / 10;
    }
 
    return val;
}
 
 
int Solve() {
 
    int start = n;
    int sum;
    int MAX_n = 0;
 
    while (true) {
        --start;
        sum = sumofnum(start);
        
        if (start + sum < n && start % 10 == 9return MAX_n;
 
        if (start + sum == n) {
            MAX_n = start;
        }
 
        if (start == 0return MAX_n;
    
    }
}
 
int main(void) {
    cin >> n;
    cout << Solve();
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
반응형

'ProgramSoliving' 카테고리의 다른 글

백준 : 2606  (0) 2019.12.16
백준 : 1436  (0) 2019.12.16
백준 : 1018  (0) 2019.12.15
백준 : 7568  (0) 2019.12.13
백준 : 2798  (0) 2019.12.13