본문 바로가기

알고리즘/백준

셀프 넘버

1. C

#include <stdio.h>
#include <stdbool.h>

bool num[10000];

int Check(int n)
{
	int sum = n;
	while (n != 0)
	{
		sum += n % 10;
		n = n / 10;
	}
	return sum;
}

int main()
{
	for (int i = 0; i < 10000; i++)
	{
		int a = Check(i);
		num[a] = true;
	}

	for (int i = 0; i < 10000; i++)
		if (!num[i])
			printf("%d \n", i);
	return 0;
}

 

2. C++

#include <iostream>
#include <cstdio>
#define N 10001 //배열 생성 1~10000
using namespace std;

bool arr[N];

int Check(int n) //셀프 넘버 판별
{
	int sum = n;

	while (1)
	{
		if (n == 0)
			break;
		sum += n % 10;
		n = n / 10;
	}

	return sum;
}

int main()
{
	for (int i = 1; i < N; i++)
	{
		int a = Check(i);
		if (a <= N)
			arr[a] = true; // 셀프 넘버 아닌 수 true 변경
	}

	for (int i = 1; i < N; i++)
		if (!arr[i])
			printf("%d \n", i);

	return 0;
}

 

'알고리즘 > 백준' 카테고리의 다른 글

팩토리얼  (0) 2019.10.03
한수  (0) 2019.09.29
정수 N개의 합  (0) 2019.09.27
평균은 넘겠지  (0) 2019.09.26
OX퀴즈  (0) 2019.09.25