The series, 1^1 + 2^2 + 3^3 + ... + 10^10 = 10405071317.
Find the last ten digits of the series, 1^1 + 2^2 + 3^3 + ... + 1000^1000.
In [1]:
n = 1000
s = str(sum([i**i for i in range(1,n+1)]))
print len(s)
print s[-10:]
In [2]:
# Supposing we didn't have native huge integer support;
# we can get away with only ever dealing with 10-digit numbers.
def truncate(n, num_digits):
return int(str(n)[-num_digits:])
n = 1000
s = 0
for i in range(1,n+1):
p = 1
for j in range(1,i+1):
p = truncate(p*i,10)
s = truncate(s + p, 10)
print s