题目描述
给你三个整数 �,�,�a,b,p,求 �� mod �abmodp。
输入格式
输入只有一行三个整数,分别代表 �,�,�a,b,p。
输出格式
输出一行一个字符串 a^b mod p=s
,其中 �,�,�a,b,p 分别为题目给定的值, �s 为运算结果。
输入输出样例
输入 #1复制
2 10 9
输出 #1复制
2^10 mod 9=7
说明/提示
样例解释
210=1024210=1024,1024 mod 9=71024mod9=7。
数据规模与约定
对于 100%100% 的数据,保证 0≤�,�<2310≤a,b<231,�+�>0a+b>0,2≤�<2312≤p<231。
#include<bits/stdc++.h>
using namespace std;
long long b,a,p,k,ans=1,c;
int main()
{
scanf("%d%d%d",&b,&p,&k);
a=b;c=p;
while(p>0)//快速幂
{
if(p%2!=0)
ans=ans*b%k;//如果p为单数,乘到ans里面去,然后取模
b=b*b%k;//每次运算都取模
p=p>>1; //用位运算除2,可能会快一点
}
ans %= k;
printf("%d^%d mod %d=%d",a,c,k,ans);//输出
return 0;
}