Thursday, May 28, 2015

Project Euler #48 - 제곱수의 합

프로젝트 오일러 48번 - self powers
x가 1~1000일 때, x^x 를 모두 더하면?

1000^1000 이면 3천자리 숫자가 된다. But, python 으로 숫자 다룰 때 overflow를 걱정하는 건 기우..

print str(sum([x**x for x in range(1,1000)]))[-10:]

이런게 뚝딱 답이 나오는 게 아직도 신기하다. 솔직히 이게 최선인가 싶기도 하고.. 그래서 좀 더 조심하는 코드를 짜 봤다.

def dkp(n):
    m = 1
    for i in range(n):
        m = m*n % 10000000000
    return m

sm = 0
for i in range(1000):
    sm += dkp(i+1)

print `sm`[-10:]

똑같은 답이 나오고 시간은 6배...
믿고 쓰자 파이썬!

No comments: