快速幂笔记

快速幂笔记

问题

给你三个整数 a , b , p ,求 abmodp

思路

如果直接算复杂度太高了,我们考虑优化。
我们知道 ab 有两种情况,一种是 n 为偶数,一种是 n 为奇数。
因为 am+n=am+an ,所以当 n 为偶数时 an=an/2an/2 ,而当 n 为奇数时,则在此基础上再多乘上一个 a 就可以了。

#include<bits/stdc++.h>
using namespace std;
#define int long long
int a,b,p;
int qmi(int a,int b,int p){
int x=1;
while(b){
if(b&1) x=x*a%p;
a=a*a%p;
b/=2;
}
return x;
}
signed main(){
cin>>a>>b>>p;
printf("%lld^%lld mod %lld=%lld\n",a,b,p,qmi(a,b,p));
return 0;
}

水完了。

yingxilin
JX の joker
2024-12-22

posted @   Qian·JXのjoker  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示