'오각수'에 해당되는 글 2건

  1. 2012.03.26 [오일러프로젝트] 45번문제
  2. 2012.03.25 [오일러프로젝트] 44번문제 (2)


삼각수, 오각수, 육각수는 아래 식으로 구할 수 있습니다.

삼각수   Tn = n (n + 1) / 2   1, 3, 6, 10, 15, ...
오각수   Pn = n (3n − 1) / 2   1, 5, 12, 22, 35, ...
육각수   Hn = n (2n − 1)   1, 6, 15, 28, 45, ...

여기서 T285 = P165 = H143 = 40755 가 됩니다.

오각수와 육각수도 되는, 그 다음으로 큰 삼각수를 구하세요.


아.. 이게 삼각수,오각수,육각수 판별식을 사용해서 40755부터 loop를 돌리면 찾으니
답이 안나온다. --; 결국 예전에 썼던 방법중 하나처럼 우선 셋을 만들어 놓고
교차검색.


 

일단 회사에서 파이썬만으로 풀었고.... 집에서 루비, 펄로풀어야 하는데 Set의 교집합을 어떻게 구현하나..
Python
Ruby
Perl
Posted by 용식


오각수는 Pn = n (3n − 1)/2 라는 공식으로 구할 수 있고, 처음 10개의 오각수는 다음과 같습니다.

1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...

위에서 P4 + P7 = 22 + 70 = 92 = P8이 됨을 볼 수 있습니다. 하지만 두 값의 차인 70 − 22 = 48 은 오각수가 아닙니다.

합과 차도 모두 오각수인 두 오각수 Pj, Pk 에 대해서, 그 차이 D = | Pk − Pj | 는 가장 작을 때 얼마입니까?


위키피디아에 오각수를 찾아보면 오각수를 판별하는 공식이 있다.

어떤 수 n에 대해서 x= sqrt(24*n + 1) + 1 / 6에 나오는 x에 대해
x == int(x)를 만족하면 n은 오각수이다.

이것으로 오각수를 판별하고, 차가 가장 작으려면 제일 근접한 두 오각수이어야 하므로
pent_list에 오각수를 하나씩 생성해나가면서 합과 차가 모두 오각수인 것을 찾는다.
가장 먼저 찾아지는 것이 가장 작은 차.


 

Python
Ruby
Perl
Posted by 용식