27 条题解
-
3
题目大意
给出 , , 。求 。
做法
注意到 ,所以我们最好可以有一个的算法来求快速幂。那么,分治,它来了。
接下来,就是思考如何用分治解决这个题目。当我们求 时,我们可以把原式子分为两个 的积, 如果 ,还得乘上一个 才能等于 。这样递归下去,我们就能实现分而治之了。
代码
#include <bits/stdc++.h> #define int long long using namespace std; int x,y,p; int pw(int x,int y,int p){ int re=1; while(y){ if(y&1) re=re*x%p;//y&1是判y的奇偶性 x=x*x%p; y>>=1;//等同于y/=2 } return re; } signed main(){ cin>>x>>y>>p; cout<<pw(x,y,p)<<endl; return 0; }
完结,撒花!!!
信息
- ID
- 171
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 1165
- 已通过
- 373
- 上传者