题目描述
给出三个整数 a,b,m,求 a^b mod m 的值
输入格式
一行三个整数 a,b,m
输出格式
一个整数,表示 a^b mod m 的值
样例输入
2 100 1007
样例输出
169
数据范围与提示
对于全部数据,1≤a,b,m≤10^9
首先如果直接乘,T飞不说,还会溢出long long。所以只能在二进制位下考虑,每次对b进行一次右移操作,ans累乘a,ans即为答案。(快速幂)
AC代码:
#include<bits/stdc++.h>
using namespace std;
unsigned long long a,b,p,ans = 1;
int main()
{
cin >> a >> b >> p;
while(b)
{
if (b & 1)
ans = (ans * a) % p;
b >>= 1;
a = (a * a) % p;
}
cout << ans;
return 0;
}