되는대로 살자

[C언어 기출문제&풀이] dfact(여기부터 소스코드 미기입) 본문

2009~2014/C/C++

[C언어 기출문제&풀이] dfact(여기부터 소스코드 미기입)

malu 2011. 8. 11. 21:13
프로그램 명: dfact
제한시간: 1 초
145 는 재미있는 성질을 가지는 수이다.
145 = 1! + 4! + 5! = 1 + 24 + 120 = 145
n! = n * (n-1) * (n-2) * ... * 1 을 의미하고 0! = 1 로 약속되어 있다.

두 자리수 이상 1000000 이하인 수에서 이런 성질을 가지는 모든 수를 출력하는 것이 문제이다.

입력

입력은 없다.

출력

한 줄에 하나씩 출력한다.

입출력 예

입력

출력

145
...
참조:projecteuler.net

풀이 :
먼저  숫자를 개별로 나누는 방법을 생각해본다.
1.%연산자를 이용하여 각 자리값을 10의 제곱수로 나눠준다.  
2.구하고 싶은 수의 아랫자리 수는 모두 빼준다.
3.자릿수 만큼 10을 나눠준다.
이렇게 하면 일단 자릿수대로 나눠진다. 그럼 이제
4.각각 수대로 팩토리얼을 구한다.
5.팩토리얼과 원래의 수를 비교하여 답을 출력한다.