A - 快速幂||取余运算
Description
给你三个整数 �,�,�a,b,p,求 ��mod�abmodp。
Input
输入只有一行三个整数,分别代表 �,�,�a,b,p。
Output
输出一行一个字符串 a^b mod p=s,其中 �,�,�a,b,p 分别为题目给定的值, �s 为运算结果。
Sample 1
Inputcopy | Outputcopy |
2 10 9 | 2^10 mod 9=7 |
Hint
样例解释
210=1024210=1024,1024mod9=71024mod9=7。
数据规模与约定
对于 100%100% 的数据,保证 0≤�,�<2310≤a,b<231,�+�>0a+b>0,2≤�<2312≤p<231。
#include <iostream>
using namespace std;
typedef long long LL;
LL a,b,p;
LL ksm(LL a,LL b,LL p)
{
LL ans = 1;
while(b)
{
if(b&1 == 1)
{
ans = (ans*a)%p;
}
a= (a*a)%p;
b = b>>1;
}
return ans;
}
int main()
{
cin>>a>>b>>p;
printf("%lld^%lld mod %lld=%lld\n",a,b,p,ksm(a,b,p));
return 0;
}