PS/Baekjoon Online Judge

[백준 2231] 분해합 [C]

kimyoungrok 2021. 7. 25. 16:00

백준 - 2231


풀이

4673 - 셀프 넘버 문제와 비슷하다.

단, 생성자의 여부가 아닌, 가장 작은 생성자를 출력해야 한다.

  • 생정자의 범위는 N - 자리수 * 9 부터 N-1이다.
  • 만약 생성자를 구하지 못했다면, 0을 반환한다.

소스코드

#include <stdio.h>
int selfNum(int n){
    int cnt = 0, temp = n;
    for (; temp > 0; temp /= 10) ++cnt;
    for (int i = n - 9*cnt; i < n; i++){
        temp = i;
        int result = i;
        for (; temp > 0; temp /= 10) result += temp%10;
        if (result == n)
            return i;
    }
    return 0;
}
int main(){
    int N;
    scanf("%d", &N);
    printf("%d\n", selfNum(N));
}

출처 및 참고자료

 

2231번: 분해합

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

www.acmicpc.net

 

 

[백준 4673] 셀프 넘버 [C]

풀이 생성자가 없으면, d(n)을 형성하지 못하므로, d(n)이 아닌 수들이 셀프 넘버라고 볼 수 있다. 소스코드 #include #define MAX 10001 int n_selfNum(int n){ int result = n; for (; n > 0; n /= 10) result..

kyr-db.tistory.com

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 15829] Hashing [C]  (0) 2021.07.25
[백준 2775] 부녀회장이 될테야 [C]  (0) 2021.07.25
[백준 11866] 요세푸스 문제 0 [C++]  (0) 2021.07.25
[백준 9663] N-Queen [C]  (0) 2021.07.24
[백준 2292] 벌집 [C]  (0) 2021.07.23