题目描述
给出三个整数 a,b,m,求 abmodm 的值。
输入
一行三个整数 a,b,m。
对于全部数据,1≤a,b,m≤109。
输出
一个整数,表示 abmodm 的值。
样例输入
2 100 1007
样例输出
169
题解
这题就是一个快速幂的模板
对于 a^b,如果b是偶数:a^b=a^(b/2) * a^(b/2);如果b是奇数:a^b=a^(b/2) *a^(b/2) *a (b/2向下取整)。
(a*b) %m =[(a%m) * (b%m)] %m
代码如下:
#include<iostream>
using namespace std;
#define ll long long
ll quickpow(ll a,ll b,ll m)
{
if(b==1)
return a;
else if(b%2==0)
{
ll x=quickpow(a,b/2,m);
return x*x%m;
}
else
{
ll x=quickpow(a,b/2,m);
x=x*x%m;
x=a*x%m;
return x;
}
}
int main()
{
ll a,b,m;
cin>>a>>b>>m;
cout<<quickpow(a,b,m)<<endl;
return 0;
}