http://euler.synap.co.kr/prob_detail.php?id=34
Skillist 설명---------------------------------------------------------------------------------
public static void main(String[] args){
int total = 0;
for(int i=3;i<=2540160;i++){ //8자리의 최대값 = 9! * 8 = 2903040(7자리)
int sum = 0; //따라서 7자리의 최대값인 2540160가 종료시점
int now = i;
while(now!=0){
sum+=fac(now%10); //각 자릿수의 팩토리얼 구해서 sum에 더하기
now/=10;
}
if(sum == i){
total += sum; //각 자릿수 팩토리얼의 합 = 자기 자신
}
}
System.out.println(total);
}
static int fac(int a){
if(a==1 || a==0){ //1! = 0! = 1
return 1;
}
int mul=1;
for(int i=2;i<=a;i++){ //팩토리얼 계산
mul *= i;
}
return mul;
}
다시 공부------------------------------------
public static void main(String[] arg){
int total = 0;
for(int i=2999999;i>2;i--){
int temp = i;
int sum = 0;
while(temp>0){
sum+=fac(temp%10);
temp/=10;
}
if(sum==i){
total+=sum;
}
}
System.out.println(total);
}
public static int fac(int n){
if(n==0 || n==1){
return 1;
}else{
return n*fac(n-1);
}
}
'코딩 테스트 > Project Euler @ kr' 카테고리의 다른 글
38) 어떤 수에 (1, 2, ... )를 곱해서 이어붙여 얻을 수 있는 가장 큰 1 ~ 9 팬디지털 숫자 (0) | 2017.02.25 |
---|---|
36) 10진법과 2진법으로 모두 대칭수인 1,000,000 이하 숫자의 합 (0) | 2017.02.25 |
33) 이상한 방법으로 약분할 수 있는 분수 찾기 (0) | 2017.02.20 |
32) 1~9 팬디지털 곱셈식을 만들 수 있는 모든 수의 합 (0) | 2017.02.20 |
31) 영국 화폐 액면가를 조합하는 방법의 수 (0) | 2017.02.20 |