Project Euler 29
Question:
Consider all integer combinations of ab for 2 ≤ a ≤ 5 and 2 ≤ b ≤ 5:
22=4, 23=8, 24=16, 25=32
32=9, 33=27, 34=81, 35=243
42=16, 43=64, 44=256, 45=1024
52=25, 53=125, 54=625, 55=3125If they are then placed in numerical order, with any repeats removed, we get the following sequence of 15 distinct terms:
4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125
How many distinct terms are in the sequence generated by ab for 2 ≤ a ≤ 100 and 2 ≤ b ≤ 100?
문제:
2 ≤ a ≤ 5 이고 2 ≤ b ≤ 5 인 a, b에 대하여 ab 의 가능한 모든 조합을 생각해보자.
22=4, 23=8, 24=16, 25=32
32=9, 33=27, 34=81, 35=243
42=16, 43=64, 44=256, 45=1024
52=25, 53=125, 54=625, 55=3125위 모든 수들을 중복을 제거하고 순서대로 나열하면 다음과 같이 서로 다른 15개의 수열이 된다.
4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125
2 ≤ a ≤ 100, 2 ≤ b ≤ 100 인 a, b에 대하여 위와 같이 가능한 ab를 나열한다면 서로 다른 수는 몇 개일까?
Solution:
import time terms = set() start = time.time() for a in range(2,101): for b in range(2,101): terms.add(a**b) print('length = {0}\nFound in ...{1:.5f}s'.format(len(terms),time.time()-start))
set 은 중복을 제거한다.
0.012 초 걸렸다.