사자자리

[C++] 백준 4673번: 셀프 넘버 본문

C++/C++ 문제

[C++] 백준 4673번: 셀프 넘버

renne 2022. 8. 3. 17:33

https://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

 

i(1 ~ 10000)를 생성자로 갖는 수 n(10000 이하)을 구한다.

n은 생성자가 있는 수이므로, 출력하지 말아야 한다.

#include <iostream>
using namespace std;

int d(int n) {	//n을 생성자로 하여, n과 n의 각 자리수를 더하는 함수
	int sum = n;
	while (n != 0) {
		sum += n % 10;
		n = n / 10;
	}
	return sum;
}

int main() {
	int arr[10001] = { 0 };
	for (int i = 1; i < 10001; i++) {
		int n = d(i);	//i가 생성자가 된다.
		if (n < 10001) {	//만들어진 수는 10000 이하만 쓴다.
			arr[n] = 1;
		}
	}
	for (int i = 1; i < 10001; i++) {
		if (arr[i] == 0) {
			cout << i << endl;
		}
	}
	return 0;
}

 

'C++ > C++ 문제' 카테고리의 다른 글

[C++] 백준 10430번: 나머지  (0) 2022.08.17
[C++] 백준 1308번: D-Day  (0) 2022.08.05
[C++] 백준 10872번: 팩토리얼  (0) 2022.08.03
[C++] 백준 10871번: X보다 작은 수  (0) 2022.07.27
[C++] 백준 2739번: 구구단  (0) 2022.07.27
Comments