경험의 기록

문제 : www.acmicpc.net/problem/4673

 

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 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
// 4673 셀프 넘버
#include <iostream>
using namespace std;
 
int arr[10001= { 0 }; // 셀프 넘버가 아닌 수 저장하기 위한 배열
 
void number(int n);
 
int main() {    
    for (int i = 1; i < 10000; i++) {
        number(i);
    }
 
    for (int i = 1; i < 10000; i++) {
        if (arr[i] == 0) {
            cout << i<<endl// 셀프 넘버인 수 출력
        }
    }
    return 0;
}
 
void number(int n) {
    int sum = n;
 
    while (1) {
        if (n == 0)break;
        sum += n % 10;
        n = n / 10;
    } // 각 자리의 수 더하기
 
    if(sum <=10000){ arr[sum] = 1; } // 셀프 넘버가 아닌 수의 자리에 해당하는 배열 체크
 
    
}
cs

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading