题目描述
给你三个整数 a,b,p,求 a^b modp。
输入格式
输入只有一行三个整数,分别代表 a,b,p。
输出格式
输出一行一个字符串 a^b mod p=s
,其中 a,b,p 分别为题目给定的值, s 为运算结果。
输入输出样例
输入
2 10 9
输出
2^10 mod 9=7
快速幂
快速幂原理. 快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。. 这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。. 让我们先来看一个简单的例子:. 3^10=3*3*3*3*3*3*3*3*3*3. 3^10= (3*3)* (3*3)* (3*3)* (3*3)* (3*3) 3^10= (3*3)^5. 3^10=9^5. 9^5=(9^4)*(9^1).
题意,具体实现上代码吗,模板题;
#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&1)
ans=ans*b%k;
b=b*b%k;
p=p>>1;
}
ans %= k;
printf("%d^%d mod %d=%d",a,c,k,ans);
}