No Rules Rules

셀프 넘버 (feat. 백준, 4673번) 본문

생활/코테

셀프 넘버 (feat. 백준, 4673번)

개발하는 완두콩 2022. 8. 10. 22:07
728x90
반응형

셀프 넘버
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

 

반응형

 

// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
using namespace std;
int solve(register int value) {
	register int n = 0;
	n += value;
	while (value) {
		n += value % 10;
		value /= 10;
	}
	return n;
}
int main() {
	ios::sync_with_stdio(false), cin.tie(NULL);
	bool arr[10001]{ false };
	for (register int i = 1, v; i <= 10000; ++i) {
		v = solve(i);
		if (v <= 10000)
			arr[v] = true;
	}
	for (register int i = 1; i <= 10000; ++i)
		if (!arr[i])
			cout << i << "\n";
	return 0;
}
// *&)*@*
  1. d(1)은 1 + 1 로 2 입니다. 따라서 2는 셀프 넘버가 아닙니다.
  2. d(2)는 2 + 2 로 4 입니다. 따라서 4는 셀프 넘버가 아닙니다.
  3. d(3)은 3 + 3 으로 6 입니다. 따라서 6은 셀프 넘버가 아닙니다.
  4. 여기까지 본다면 1과 3과 5는 셀프 넘버입니다.
  5. 동일하게 10000까지 d(N)을 구했을 때, 구해진 값은 셀프 넘버 입니다.
  6. 따라서 셀프 넘버가 아닌, 즉 arr가 false인 인덱스 값을 모두 출력합니다.
728x90
반응형
Comments