社区讨论
求问有关快速幂
学术版参与者 13已保存回复 17
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 17 条
- 当前快照
- 1 份
- 快照标识符
- @mict4dvs
- 此快照首次捕获于
- 2025/11/24 15:09 3 个月前
- 此快照最后确认于
- 2025/11/24 17:04 3 个月前
rt,本人比较喜欢写递归快速幂:
CPPll qpow(ll x, int y, int mod) {
if(y == 1) return x;
ll res = qpow(x, y / 2, mod);
if(y & 1)
res = res * res % mod * x % mod;
else
res = res * res % mod;
return res;
}
但在做题的时候会
CPPTLE 1.04s ~ 1.07s,但换成循环快速幂之后:ll qpow(ll x, int y, int mod) {
ll sum = 1;
x %= mod;
while(y > 0) {
if(y & 1)
sum = sum * x % mod;
x = x * x % mod;
y >>= 1;
}
return sum;
}
AC 700ms~800ms,这两种快速幂复杂度不是相同的吗,为什么会差 200+ms ?回复
共 17 条回复,欢迎继续交流。
正在加载回复...