快速幂的复杂度

快速幂求 a^b 的时间复杂度是【0】。 本节模型:qpow(a, b, mod) 把指数 b 按二进制拆,O(log b) 求 a^b % mod。

开始练习 →

为什么不直接乘 b 次

第 1 步:13 的二进制,从低位看 第 2 步:下面是 2、2²、2⁴、2⁸ 第 3 步:这位是 1:结果乘上 2 第 4 步:这位是 0:跳过 第 5 步:这位是 1:结果乘上 16 第 6 步:这位是 1:结果乘上 256 第 7 步

开始练习 →

b & 1 判断的是什么

快速幂里 b & 1 判断的是 b【0】。 本节模型:qpow(a, b, mod) 把指数 b 按二进制拆,O(log b) 求 a^b % mod。

开始练习 →

每轮为什么把 a 平方

快速幂每轮 a = a * a % mod,是为了【0】。 本节模型:qpow(a, b, mod) 把指数 b 按二进制拆,O(log b) 求 a^b % mod。

开始练习 →

2 的 10 次方模 1000

运行下面这段程序: 本节模型:qpow(a, b, mod) 把指数 b 按二进制拆,O(log b) 求 a^b % mod。 #include <iostream> #include <string> #incl

开始练习 →

补全:这一位是 1 就乘上

补全快速幂:当前位为 1 时把答案乘上底数并取模。补全后输出 3^5 mod 1000000007。 本节模型:qpow(a, b, mod) 把指数 b 按二进制拆,O(log b) 求 a^b % mod。 (本题用 g++ -std=

开始练习 →

补全:底数平方

补全快速幂:每轮把底数平方并取模。补全后输出 2^16 mod 1000000。 本节模型:qpow(a, b, mod) 把指数 b 按二进制拆,O(log b) 求 a^b % mod。 (本题用 g++ -std=c++17 -O0

开始练习 →

补全:指数右移

补全快速幂:每轮把指数右移一位(去掉最低位)。补全后输出 2^5 mod 1000。 本节模型:qpow(a, b, mod) 把指数 b 按二进制拆,O(log b) 求 a^b % mod。 (本题用 g++ -std=c++17 -O

开始练习 →

int 最大能装多大

C++ 里 int(32 位)能表示的最大值大约是【0】。

开始练习 →

a*b%m 为什么会算错

第 1 步:一格约等于 4 位数字 第 2 步:上:long long,约 19 位 第 3 步:a、b 各 12 位,乘积 24 位 第 4 步:要 6 格,只有 5 格:溢出 第 5 步:__int128 约 38 位:装得下 a、b、

开始练习 →