P1226 【模板】快速幂 题解
注:应要求,本篇题解分为简介、思路、代码三个部分。
简介
所谓“快速幂”,顾名思义,就是快速地算出
正常人在刚学习了循环结构时,如果需要求
快速幂则是一个
那么如何让 请看VCR。
思路
在初一学到幂的时候,我们会知道一个运算法则:
那么我们就可以考虑把
这时我们就能看出,这不就是在求
代码
有点懵就看代码注释吧。
#include<bits/stdc++.h>
#define int long long //十年OI一场空,不开long long见祖宗
using namespace std;
int n,m,a,b,ans=1,mod;
signed main()
{
cin>>n>>m>>mod;
a=n;
b=m; //输出要用,先存一下
while(m) //当m还能再转化成二进制
{
if(m%2) ans=(ans*n)%mod; //如果这一位为1,那么就乘上这一位的对应值——a^(2^m)
n=(n*n)%mod; //计算下一位的位值
m/=2; //正常转化二进制
}
cout<<a<<"^"<<b<<" mod "<<mod<<"="<<ans%mod; //输出不要忘了取余
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】