728x90
반응형

문제 : https://codeup.kr/problem.php?id=1615

 

셀프 넘버(Self-Number)

1부터 10사이의 셀프 넘버는 1, 3, 5, 7, 9이다.  따라서 합은 25

codeup.kr

문제 설명

어떤 자연수 n이 있을 때, d(n)을 n의 각 자릿수 숫자들과 n 자신을 더한 숫자라고 정의하자.

예를 들어 d(91) = 9 + 1 + 91 = 101 이 때, n을 d(n)의 제네레이터(generator)라고 한다.

위의 예에서 91은 101의 제네레이터이다.

어떤 숫자들은 하나 이상의 제네레이터를 가지고 있는데, 101의 제네레이터는 91 뿐 아니라 100도 있다.

그런데 반대로, 제네레이터가 없는 숫자들도 있으며, 이런 숫자를 인도의 수학자 Kaprekar가 셀프 넘버(self-number)라 이름 붙였다.

예를 들어 1,3,5,7,9,20,31 은 셀프 넘버 들이다. 

시작 값(a)과 마지막 값(b)가 입력되면 두 수 사이의 셀프 넘버들의 합을 출력하시오.

 

[그림1] 입 출력 형식 및 예제

#include <stdio.h>


int self(int num)
{
	int i;
	
	for(i = 1; i<=num; i++)
	{
		int temp_a = i;
		int temp_b = 0;
		
		while(temp_a > 0)
		{
			temp_b +=temp_a%10;
			temp_a/=10;
		}
		
		if(temp_b + i == num)
			return 0;
	}
	
	return num;
}


int main()
{
	int a,b;
	int sum = 0;
	scanf("%d %d",&a,&b);
	
	for(a; a<=b; a++)
	{
		sum +=self(a);
	}
	
	printf("%d",sum);
	return 0;
}
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기