본문 바로가기

오일러프로젝트

[오일러프로젝트] 61번문제

삼각수, 사각수, 오각수 같은 다각수들은 아래의 공식으로 만들 수 있습니다.

삼각수P3,n = n(n+1)/21, 3, 6, 10, 15, ...
사각수P4,n = n21, 4, 9, 16, 25, ...
오각수P5,n = n(3n−1)/21, 5, 12, 22, 35, ...
육각수P6,n = n(2n−1)1, 6, 15, 28, 45, ...
칠각수P7,n = n(5n−3)/21, 7, 18, 34, 55, ...
팔각수P8,n = n(3n−2)1, 8, 21, 40, 65, ...

그런데 4자리 숫자 8128, 2882, 8281 (순서대로) 에는 세 가지의 재미있는 성질이 있습니다.

  1. 각 숫자들은 서로 꼬리를 물고 순환됩니다. 각 숫자의 뒤쪽 두 자리는 다음 숫자의 앞쪽 두 자리가 되는 식입니다.
  2. 각 숫자는 서로 다른 다각수인데, 여기서는 삼각수 (P3,127=8128), 사각수 (P4,91=8281), 오각수 (P5,44=2882)가 대응됩니다.
  3. 이런 성질을 갖는 4자리의 숫자 세 개는 이 숫자들이 유일합니다.

위와 같이 순환되면서 서로 다른 다각수(삼각수 ~ 팔각수)이기도 한 4자리 숫자 여섯 개의 유일한 순서쌍을 찾고, 그 합을 구하세요.



튜플을 사용해서 N각수의 N을 키로, 해당되는 번호를 리스트로 하는 map을 생성하고

이 map을 통해서 각 N각수에서의 순환수가 되는지를 판단한다.



Python
내가 푼 방식은 코드가 너무 난잡해서.. 다른 사람의 풀이된 코드를 참고 및 공부할겸 올려둠.파이썬이 참.. 유용하구나..하는생각이 절로드는 코드..ㅋ