200 的二进制里有几个 1
运行下面这段程序: 本节模型:to_base(n, base) 除基取余转进制;count_bits(n) 数二进制里 1 的个数。 #include <iostream> #include <string> #in
补全:取当前这一位
补全 to_base:当前最低位是 n % base。补全后输出 255 的十六进制。 本节模型:to_base(n, base) 除基取余转进制;count_bits(n) 数二进制里 1 的个数。 (本题用 g++ -std=c++17
补全:除以 base
补全 to_base:每轮把 n 除以 base。补全后输出 100 的八进制。 本节模型:to_base(n, base) 除基取余转进制;count_bits(n) 数二进制里 1 的个数。 (本题用 g++ -std=c++17 -O
补全:数最低位
补全 count_bits:每轮累加最低位。补全后输出 255 的二进制里 1 的个数。 本节模型:to_base(n, base) 除基取余转进制;count_bits(n) 数二进制里 1 的个数。 (本题用 g++ -std=c++1
加法为什么要先各自取模
(a + b) % p 常写成先各取模再相加取模,主要原因是【0】。 本节模型:madd / mmul / msub 模意义下加乘减(先取模防溢出、减法 +p 防负),fact_mod(n, p) 边乘边取模求 n!。
乘法取模的性质
(a * b) % p 等于【0】。 本节模型:madd / mmul / msub 模意义下加乘减(先取模防溢出、减法 +p 防负),fact_mod(n, p) 边乘边取模求 n!。
减法取模为什么要 +p
第 1 步:在 0..6 这一圈里,从 3 出发 第 2 步:3 - 5 = -2:掉出这一圈了 第 3 步:C++ 里 -2 % 7 仍然是 -2 第 4 步:先 +7 再取模:落回 5 0 1 2 3 4 5 6 x 模意义下的减法常写
取模加法的结果
运行下面这段程序: 本节模型:madd / mmul / msub 模意义下加乘减(先取模防溢出、减法 +p 防负),fact_mod(n, p) 边乘边取模求 n!。 #include <iostream> #include
补全:模加法
补全 madd:各取模再相加再取模。补全后输出 madd(10^9, 7, 10^9+7)。 本节模型:madd / mmul / msub 模意义下加乘减(先取模防溢出、减法 +p 防负),fact_mod(n, p) 边乘边取模求 n!
补全:模乘法
补全 mmul:各取模再相乘再取模。补全后输出 mmul(100000, 100000, 10^9+7)。 本节模型:madd / mmul / msub 模意义下加乘减(先取模防溢出、减法 +p 防负),fact_mod(n, p) 边乘