Skip to the content.

:heavy_check_mark: modint/mod-pow.hpp

Required by

Verified with

Code

#pragma once

unsigned int ModPow(unsigned int a, unsigned long long n, unsigned int m) {
  unsigned long long x = a, y = 1;
  while (n) {
    if (n & 1) y = y * x % m;
    x = x * x % m;
    n >>= 1;
  }
  return y;
}
#line 2 "modint/mod-pow.hpp"

unsigned int ModPow(unsigned int a, unsigned long long n, unsigned int m) {
  unsigned long long x = a, y = 1;
  while (n) {
    if (n & 1) y = y * x % m;
    x = x * x % m;
    n >>= 1;
  }
  return y;
}
Back to top page