题目描述
求 a 的 b 次方对 p 取模的值,其中 1≤a,b,p≤10^9
输入
三个用空格隔开的整数a,b和p。
输出
一个整数,表示a^b mod p的值。
样例输入
2 3 9
样例输出
8
#include <iostream> #include <string> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <vector> #include <queue> #define range(i,a,b) for(int i=a;i<=b;++i) #define LL long long #define rerange(i,a,b) for(int i=a;i>=b;--i) #define fill(arr,tmp) memset(arr,tmp,sizeof(arr)) using namespace std; LL a,b,p; void init(){ cin>>a>>b>>p; } LL qpow(LL a,LL b){ LL ans=1;a%=p; while(b){ if(b&1)ans=ans*a%p; a=a*a%p; b>>=1; } return ans; } void solve(){ cout<<qpow(a,b)%p<<endl; } int main() { init(); solve(); return 0; }