http://euler.synap.co.kr/prob_detail.php?id=34
문제:숫자 145에는 신기한 성질이 있습니다. 각 자릿수의 팩토리얼(계승)을 더하면 1! + 4! + 5! = 1 + 24 + 120 = 145 처럼 자기 자신이 됩니다.
이렇게 각 자릿수의 팩토리얼을 더하면 자기 자신이 되는 모든 수의 합을 구하세요.
단, 1! = 1 과 2! = 2 의 경우는 덧셈이 아니므로 제외합니다.
#include<stdio.h>
#include<string.h>
int arr[10]={0, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880};
int check(int num)
{
char string[10];
int i, total=0;
sprintf(string, "%d", num);
for(i=0; i<strlen(string); i++)
total+=arr[string[i]-'0'];
return total==num;
}
int main()
{
int i;
int total=0;
for(i=3; i<=2540160; i++)
if(check(i)) total+=i;
}
시발... 존나 쉽군! 하면서 풀었는데 답이 안나옴 ㅠㅠ
답을 계산만하고 출력을 안하니까 안나오는거 아닐까
답 출력하면 145만 나옴 ㅜㅜ
(1450000이 아니고 only 145만 나온다는 뜻)
0!=1 임.
0!=1 로 돌리면 40730 나오고 난 이게 답인거같음. 아니면 나도 helpless.
오 그거 답 맞는데 어디가 잘못된지 알려주셈 ㅜ
아 시발 맞다 0팩토리얼은 1이지
ㅋㅋㅋㅋㅋ fds님이 말한 !가 NOT 기호인줄 알고 ㅈㄴ헤맸음