题目描述
给你三个整数 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); }