Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.53 KB | None | 0 0
  1. m= 5
  2. n= 14
  3.  
  4. # Exponentiation modulo m by squarings (a < m, b >0)
  5. def power(a, b, m):
  6. if b == 1:
  7. return a
  8. p= power((a * a) % m, b >> 1, m)
  9. return p if a & 1 == 0 else (a * p) % m
  10.  
  11. # Arrays with k^k and k^m
  12. kk= [0]
  13. km= [0]
  14. for i in range(1, m):
  15. kk.append(power(i, i, m) % m)
  16. km.append(power(i, m, m) % m)
  17.  
  18. # Compute the sum
  19. s= 0
  20. i= 0
  21. while i < n+1:
  22. # Batch of m terms
  23. for k in range(i, min(i + m, n+1)):
  24. s+= kk[k]
  25. kk[k]= (kk[k] * km[k]) % m # Powers k^k <- k^(k+m)
  26. i+= m
  27.  
  28. print s % m
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement