Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- m= 5
- n= 14
- # Exponentiation modulo m by squarings (a < m, b >0)
- def power(a, b, m):
- if b == 1:
- return a
- p= power((a * a) % m, b >> 1, m)
- return p if a & 1 == 0 else (a * p) % m
- # Arrays with k^k and k^m
- kk= [0]
- km= [0]
- for i in range(1, m):
- kk.append(power(i, i, m) % m)
- km.append(power(i, m, m) % m)
- # Compute the sum
- s= 0
- i= 0
- while i < n+1:
- # Batch of m terms
- for k in range(i, min(i + m, n+1)):
- s+= kk[k]
- kk[k]= (kk[k] * km[k]) % m # Powers k^k <- k^(k+m)
- i+= m
- print s % m
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement