Programming/백준

[1일 1백준 : 4673번] 셀프 넘버

HyeunJae 2021. 1. 19. 23:33

이번문제에서 많이 해매서 좀 억지로 푼 감이 있네요..

#include <iostream>
#include <math.h>
#include <vector>
#include <algorithm>

const int d(int n)
{
	const int number = n;
	int sum = 0;
	while (n != 0)
	{
		sum += n % 10;
		n /= 10;
	}

	return number + sum;
}


void SelfNumber(int n)
{
	std::vector<int> index;
	std::vector<int>::iterator iter;
	index.reserve(10000);
	int number = 1;
	
	for (size_t i = 0; number < n; i++)
	{
		number = d(i);
		index.emplace_back(number);
	}
	std::sort(index.begin(), index.end());

	for (size_t i = 0; i <= n - 7; i++)
	{
		if ((iter = std::find(index.begin(), index.end(), i)) == index.end())
			std::cout << i << std::endl;
	}
}
/*
1,3,5,7,9,20,31,42,53,64,75,86,97 : Self Number
2,4,6,8,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27..

*/
int main(void)
{
	SelfNumber(10000);
	return 0;
}

 

4673번: 셀프 넘버 (acmicpc.net)

 

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,

www.acmicpc.net