0

i need to calculate ((2**a)*(a))%1000000007 where a is in order of 10^10. as much as i know python can handle int less than 2^1400. then is there any way to calculate this? or any mathematical rule to solve it?

  • 1
    https://en.wikipedia.org/wiki/Modulo_operation#Equivalences – meowgoesthedog Jan 16 '19 at 15:45
  • See the two duplicates; one on the general approach to these problems (large numbers with a remainder), the other pointing to the `math.pow()` function, which *already* uses those same techniques to keep the results manageable. – Martijn Pieters Jan 16 '19 at 15:49

1 Answers1

0

This gets really easy since python's math.pow has an optional argument for modulo.

from math import pow
(pow(2, a, 1000000007)*a)%1000000007

This let's you not do the 2**a to all the digits and just return the modulo.

Primusa
  • 13,136
  • 3
  • 33
  • 53