24 条题解
-
4
我来水题解了一道典型的快速幂模板题。
(这不是废话吗)考虑,我们将表示成二进制形式,然后定义一个作为基数,一开始等于。从右往左遍历的每一位,如果当前位为则给答案乘上对应的基数,然后将变为其平方。最后就是答案。
复杂度。
注意:以上操作实现过程中均要对取模。
代码:
#include <bits/stdc++.h> using namespace std; #define int long long int a,b,mod; int ksm(int x,int p) { int base=x; int ans=1; //下面运用了一些位运算小技巧。 while(p) { if(p&1)ans=ans*base%mod; p>>=1; base=base*base%mod; } return ans%mod; } signed main() { cin>>a>>b>>mod; cout<<ksm(a,b); return 0; }
信息
- ID
- 171
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 876
- 已通过
- 295
- 上传者