求乘方取模
题目描述:
给定非负整数A、B、M,求(A ^ B) mod M。
输入描述 Input Description
包含多组输入,输入处理到EOF。
每组输入仅一行,三个用空格隔开的非负整数A、B、M。
输出描述:
对于每组输入,输出一行,一个非负整数,即(A ^ B) mod M。
样例输入:
2 3 100006
32 71 83
900 800 777
样例输出:
8
5
219
数据范围及提示:
0 <= A, B < 8 * 10^18。
0 < M < 8 * 10^18。
保证A和B不同时为0。
#include
#include
using namespace std;
unsigned long long a,b,m;
unsigned long long quick_mul(unsigned long long a,unsigned long long b,unsigned long long mod)
{
unsigned long long ans=0;
while(b)
{
if(b&1)
{
b--;
ans=(ans+a)%mod;
}
b>>=1;
a=(a+a)%mod;
}
return ans;
}
unsigned long long quick_mi(unsigned long long a,unsigned long long b,unsigned long long mod)
{
unsigned long long ans=1;
while(b)
{
if(b&1)
ans=quick_mul(ans,a,mod);
b>>=1;
a=quick_mul(a,a,mod);
}
return ans;
}
int main()
{
while(cin>>a>>b>>m)
cout<return 0;
}