본문 바로가기

코딩 테스트/Project Euler @ kr

45) 오각수와 육각수도 되는, 40755 다음으로 큰 삼각수는?

반응형

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


육각수는 삼각수에 포함되기 때문에 육각수이면 무조건 삼각수 입니다.

따라서 오각수이면서 육가수인 수를 찾으면 됩니다.


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


public static void main (String[] args){

HashSet<Long> su5 = new HashSet<Long>(); //오각수 집합

int max = 1;

long su5max = 0;

long j = 1;

long temp;

int su = 0;

while(true){

for(long i=max;i<max+50;i++){ //오각수를 50개씩 끊어서 비교할 예정 

su5max = (i*((3*i)-1)/2);

su5.add(su5max);

}

max+=50;

while((temp=j*((2*j)-1)) <= su5max){                 //탐색한 최대 오각수 보다 크기 않은 육각수를 찾아서 비교

if(su5.contains(temp)){ //육각수가 오각수 이면

if((su+=1)==3){ //그게 세번째이면

System.out.println(temp);

return ;

}

}

j+=1;

}

su5.clear(); //메모리를 위해 오각수 집합 삭제

}

}

반응형