题目:
给定a,b,c,要求按照以下程序计算ans:
ans=1
for(i=1;i<=b;i++){
ans=ans*a;
}
ans%=c
输出ans
模板
ll qpow_mod(ll a, ll n, ll mod) {
ll ret = 1;
while (n) {
if (n & 1) ret = qmul(ret, a, mod);
a = qmul(a, a, mod);
n >>= 1;
}
return ret;
}
实际应用
代码`#include <iostream>
#define IOF ios_base::sync_with_stdio(0)
#define ll long long
using namespace std;
ll a, b ,c;
ll qmul(ll a, ll b, ll mod) {
ll res = 0;
while (b) {
if (b & 1) res = (res + a) % mod;
(a <<= 1) %= mod;
b >>= 1;
}
return res;
}
ll qpow_mod(ll a, ll n, ll mod) {
ll ret = 1;
while (n) {
if (n & 1) ret = qmul(ret, a, mod);
a = qmul(a, a, mod);
n >>= 1;
}
return ret;
}
int main(){
IOF;
while (cin >> a >> b >> c){
cout << qpow_mod(a, b, c) << endl;
}
return 0;
}