1**1 + 2**2 + 3**3 + … + 10**10 = 10405071317.
1**1 + 2**2 + 3**3 + … + 1000**1000的最后十位是什么?
import time
def get_prod_digit(x, n):
""" 后10位相称即可 """
x_str = str(x)
x_ = int(x_str[-n:])
prod = 1
for i in range(x):
prod_str = str(prod)
prod = int(prod_str[-n:])
prod *= x_
return int(str(prod)[-n:])
t0 = time.time()
print(str(sum([get_prod_digit(i, 10) for i in range(1, 1001)]))[-10:])
t1 = time.time()
print(t1 - t0)
# 直接求解
t0 = time.time()
print(str(sum([i ** i for i in range(1, 1001)]))[-10:])
t1 = time.time()
print(t1 - t0)