[Baekjoon 백준] 4673번: 셀프 넘버

  4673번 : 셀프 넘버

 

BAEKJOON ONLINE JUDGE (백준 문제풀이 채점 사이트)

 

 

문제링크

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

 

생성자가 없는 숫자가 셀프 넘버이다.

10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

 

1부터 시작해서 10000까지 d(n)을 구하면서 해당되는 숫자가 카운트 되지 않으면 출력한다.

예를 들어 1은 첫수 이므로 셀프 넘버가 되며 1 + 1 은 2가 되기 때문에 2는 셀프 넘버가 되지 않는다.

2 + 2 = 4, 3 + 3 = 6, 4 + 4 = 8 ..... 10 + 1 = 11, 11 + 1 + 1 = 13....

계산하면서 나오지 않은 수를 출력하면 된다.

 

 

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
#include <stdio.h>
#define MAX 10000
 
int main(void)
{
    int arr[MAX + 5= { 0, };
    int n, dn;
 
    for (int i = 1; i < MAX; i++)
    {
        n = i;
        dn = n;
        while (n != 0)
        {
            dn += (n % 10);
            n /= 10;
        }
        if (dn <= MAX)
        {
            arr[dn]++;
        }
    }
    for (int i = 1; i <= MAX; i++)
    {
        if (arr[i] == 0)
        {
            printf("%d\n", i);
        }
    }
}
cs

 

 

 

 

 

이 글을 공유하기

댓글

Designed by JB FACTORY