快速冪

/*
 * AP325
 * P-2-3. 快速冪
*/
#include<bits/stdc++.h>
using namespace std;

long long binpow(long long a, long long b, long long m) {
  a %= m;
  long long res = 1;
  while (b > 0) {
    if (b & 1){
    	res = res * a % m;
    }
    a = a * a % m;
    b >>= 1; // 除2
  }
  return res;
}

int main() {
   long long x,y,p;
   cin >> x >> y >> p;
   cout << binpow(x,y,p) << endl;
}

Last updated

Was this helpful?