PS

BOJ 2231 - 분해합

728x90

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

 

2231번: 분해합

문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+

www.acmicpc.net

브루트포스 를 이용해서 푸는 문제로,

조건만 잘 맞추면 어렵지 않게 풀 수 있는 문제다

 

나 같은 경우엔 

1 부터 백만까지의 수(i) 를 돌려서 

그 수(i) + 그 수의 각 자리수의 합 (i 의 자리수 합) 을 구한다음

그 값이 입력받은값 N 과 동일하면 값을 출력하고,

 

전체 다 돌았음에도 값을 찾지 못하는 경우 0 이 출력되도록 해주면 풀렸다.

 

- c++

#include <iostream>
#define MAX 1000001
 
using namespace std;
 
int N;
 
int main() {
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);
 
    cin >> N;
    
    bool check = false;
    for (int i = 1; i < MAX; i++) {
        int tmp = i; 
        int sum = 0
        int answer = i; 
        sum += i;
        while (tmp) {
            int re = tmp % 10;
            sum += re;
            tmp /= 10;
        }
        
        if (sum == N) {
            check = true;
            cout << answer;
            break;
        }
    }
    
    if(!check) {
        cout << 0;
    }
 
    return 0;
}
cs

728x90

'PS' 카테고리의 다른 글

BOJ 3085 - 사탕 게임  (0) 2020.08.14
BOJ 1157 - 단어 공부  (0) 2020.08.13
BOJ 2042 - 구간 합 구하기  (0) 2020.08.11
BOJ 2309 - 일곱 난쟁이  (0) 2020.08.11
BOJ 1002 - 터렛  (0) 2020.08.07