Skip to content

Instantly share code, notes, and snippets.

@JayXon
Created January 5, 2015 07:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JayXon/fa2f5919f4f647c7d331 to your computer and use it in GitHub Desktop.
Save JayXon/fa2f5919f4f647c7d331 to your computer and use it in GitHub Desktop.
Modular Multiplicative Inverse of a when m = 1000000007
uint64_t modinv_1000000007(uint64_t a)
{
a %= 1000000007;
uint64_t r = a;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
r = (r * a) % 1000000007;
a = (a * a) % 1000000007;
return (r * a) % 1000000007;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment