快速幂模板(洛谷P1226)

 

#include <iostream>
#include <string>
#include <cstdlib>
#include <sstream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <map>
using namespace std;

typedef long long ll;

ll mod_pow(ll x, ll n, ll mod){
   ll res = 1%mod; //防止n=0;
   while(n>0){
       if(n&1)
           res = res*x%mod;
       x = x*x%mod;
       n>>=1;
   }
   return res;

}

void solve(){
    int x,n,mod;
    scanf("%d%d%d",&x,&n,&mod);
    //输出:x^n mod mod=result;
    cout << x << "^" << n << " mod " << mod << "=" << mod_pow(x,n,mod);
}

int main() {
    solve();
    return 0;
}

注:(a+b)mod p = (a mod p +b mod p) mod p

   (a*b)  mod p = (a mod p * b mod p) mod p

猜你喜欢

转载自www.cnblogs.com/xiaoxb17/p/12786273.html