728x90
반응형

분해합 

문제

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

자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.

출력

첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.

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
#include <stdio.h>
int wkfltn(int x){
    int result=0;
    for(int i=x; i>0; i/=10){
        result = result+i%10;
    }
    return result+x;
}
 
 
int main()
{
    int n;
    scanf("%d",&n);
    int result = n;
    for(int i=n; i>n-70; i--){
        if(wkfltn(i)==n&&i<n) result = i;
    }
    if(result == n){
         printf("0");
         return 0;
    }
    printf("%d",result);
    
    return 0;
}
cs

자리수 라는 함수를 만들었다.

이 함수는 x를 입력받으면 문제와 조건같이 분해합을 반환한다.

입력받는 N 이 7자리다 보니 70번 연산 안에 결과가 나올 것 같아 n-70 을 사용했다.

 

어떤 i의 분해합이 n과 같고 i 가 n보다 작다면  result 값이 i가 된다.

 

분해합 생성자가 없는 경우 result 안에는 n 이 그대로 남아있을 것이다.

result ==n 이면 0 출력

그렇지 않으면 result 값을 출력한다.

반응형

'백준 단계별로 풀어보기 > 브루트 포스' 카테고리의 다른 글

백준 7568 덩치  (0) 2022.10.20
백준 2798 블랙잭  (0) 2022.10.18
백준 1436 영화감독 숌  (0) 2022.10.18

+ Recent posts