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(); //메모리를 위해 오각수 집합 삭제
}
}
'코딩 테스트 > Project Euler @ kr' 카테고리의 다른 글
50) 1백만 이하의 소수 중 가장 길게 연속되는 소수의 합으로 표현되는 수는? (0) | 2017.03.03 |
---|---|
49) 세 항이 소수이면서 다른 수의 순열이 되는 4자리 숫자의 등차수열 찾기 (0) | 2017.03.02 |
44) 합과 차도 모두 오각수인 두 오각수 차의 최소값은? (0) | 2017.03.02 |
47) 서로 다른 네 개의 소인수를 갖는 수들이 처음으로 네 번 연속되는 경우는? (0) | 2017.03.01 |
46) (소수 + 2×제곱수)로 나타내지 못하는 가장 작은 홀수인 합성수는? (0) | 2017.03.01 |