이 블로그는 더 이상 업데이트되지 않습니다.

최신 내용을 확인하시려면 여기를 클릭해주세요.

프로젝트 오일러 45번

  • 2013/09/17
  • Perl

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

삼각수   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 가 됩니다.

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

이전 44번 문제를 풀었다면, n각수 판별식을 쉽게 만들 수 있다. 이를 이용하면 된다.

이 때, 변수가 정수인지 판별하는 함수가 필요한데, Scalar::Util::Numeric 모듈의 isint 함수를 사용해도 되겠지만, 정규식을 이용하여 판별하여도 성능상 크게 관계가 없다.