Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Archives
Today
Total
관리 메뉴

hwooo

(C) 4673번: 셀프 넘버 본문

Study/Algorithm

(C) 4673번: 셀프 넘버

hwooo 2022. 6. 7. 05:03

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


코드

#include <stdio.h>
void Self_num();
int arr[10001] = { 0, };
int main() {
	int i;
	Self_num();
	for (i = 1; i <= 10000; i++) {
		if (!arr[i]) printf("%d\n", i);
	}

}
void Self_num() {
	int i, n, i_1000, i_100, i_10, i_1;

	for (i = 1; i <= 10000; i++) {
		i_1000 = i / 1000;
		i_100 = i / 100 - i_1000 * 10;
		i_10 = i / 10 - i_1000 * 100 - i_100 * 10;
		i_1 = i % 10;

		n = i + i_1000 + i_100 + i_10 + i_1;

		if (n <= 10000) arr[n]++; // 합이 10000 이하일 경우 배열에 저장
	}
}

/*
void Self_num() {
	int i, n, i_1000, i_100, i_10, i_1;

	for (i = 1; i <= 10000; i++) {

		if (i < 10)  n = i + i;

		else if (i < 100) {
			n = i + i / 10 + i % 10;
		}

		else if (i < 1000) {
			i_100 = i / 100;
			i_10 = i / 10 - i_100 * 10;
			i_1 = i % 10;

			n = i + i_100 + i_10 + i_1;
		}
		else {
			i_1000 = i / 1000;
			i_100 = i / 100 - i_1000 * 10;
			i_10 = i / 10 - i_1000 * 100 - i_100 * 10;
			i_1 = i % 10;

			n = i + i_1000 + i_100 + i_10 + i_1;
		}

		if (n <= 10000) arr[n]++;
	}
}
*/

'Study > Algorithm' 카테고리의 다른 글

(C) 11654번: 아스키 코드  (0) 2022.06.07
(C) 1065번: 한수  (0) 2022.06.07
(C) 15596번: 정수 N개의 합  (0) 2022.06.06
(C) 4344번: 평균은 넘겠지  (0) 2022.06.06
(C) 8958번: OX퀴즈  (0) 2022.06.06