본문 바로가기

코딩 테스트/Project Euler @ kr

30) 각 자리 숫자를 5제곱해서 더했을 때 자기 자신이 되는 수들의 합은?

반응형

http://euler.synap.co.kr/prob_detail.php?id=30


Skillist 설명---------------------------------------------------------------------------------


public static void main(String[] args){

int result = 0;

for(int i=2;i<(5*9*9*9*9*9);i++){    //종료 시점은 직관적으로

int su = i;

int sum = 0;

while(su>0){

int asd = su%10;

sum += asd*asd*asd*asd*asd;

su/=10;

}

if(sum == i){

result += sum;

}

}

System.out.println(result);

}


다시 공부-----------------------------------


//최대 상한가 계산하는 파트 추가


public static void main(String[] arg){

int max=0;

//종료 조건 찾기

for(int i=999999;i>=0;i--){ //999999부터 각 자리수 5제곱의 합을 계산하여 자기자신보다 클 경우 break; 수행

int temp = i;

int sum = 0;

while(temp>0){

int value = temp%10;

sum+= (value*value*value*value*value);

temp/=10;

}

if(i<=sum){

System.out.println(i + "일때 계산값 : " + sum);

max=i+1;

break;

}

}

//지금부터 계산

int totalSum=0;

for(int i=2;i<=max;i++){

int temp = i;

int tempSum = 0;

while(temp>0){

int value = temp%10;

tempSum+=(value*value*value*value*value);

temp/=10;

}

if(i==tempSum){

totalSum+=i;

}

}

System.out.println(totalSum);

}

반응형