summaryrefslogtreecommitdiff
path: root/math/modPowIterativ.cpp
blob: f06b4bd29439c10f0aede62aa02fb49bbb8ab12c (plain)
1
2
3
4
5
6
7
8
9
10
11
// Laufzeit: O(log (b))
ll powMod(ll a, ll b, ll n) {
  if (b == 0) return 1;
  ll res = 1;
  while (b > 1) {
    if (b & 1) res = (a * res) % n;
    a = (a * a) % n;
    b /= 2;
  }
  return (a * res) % n;
}