综合补全:CRT 模数乘积

补全 crt:M 是模数乘积。补全后解 x≡3 (mod 5)、x≡4 (mod 7)。 综合:把逆元、组合数、CRT、矩阵快速幂按题目组合起来用。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

综合补全:转移矩阵

补全 fib 的转移矩阵。补全后输出第 25 个斐波那契数。 综合:把逆元、组合数、CRT、矩阵快速幂按题目组合起来用。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

综合补全:费马指数

补全 inv 的费马指数。补全后输出 4 关于 7 的逆元。 综合:把逆元、组合数、CRT、矩阵快速幂按题目组合起来用。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

模数不是质数怎么求逆元

模数 m 不是质数时(比如 m = 15),要求 a 的逆元,应该【0】。

开始练习 →

写扩展欧几里得

场景:实验机上 ~/work/nt/ex.cpp 对每行 a m 输出 gcd 和 a 关于 m 的逆元,但 exgcd 还是空的。 任务:补全 exgcd。a、m 可以到 10^18,不互质时逆元输出 -1。make 编译,./ex &l

开始练习 →

十万次组合数查询

场景:~/work/nt/comb.cpp 求一批组合数之和。结果对,可每次查询都从头连乘,10 万次、n 到 2×10^5 时要跑很久。 任务:改写 comb.cpp,让它在 2 秒内算完。make 编译(-O2),可以自己造大数据用 t

开始练习 →

写矩阵快速幂

场景:~/work/nt/mat.cpp 读一个 k×k 矩阵,要输出它的 n 次方模 p,可 mat_pow 还没写。 任务:补全 mat_pow。n 可以到 10^18,n = 0 要输出单位矩阵。make 编译后用 sample.tx

开始练习 →

修好合数模数的逆元

场景:~/work/nt/inv.cpp 求逆元,模数是质数时对,模数是 9、15 这种合数时就错了。 任务:修好 inv_mod,让任何与 a 互质的模数都算对。make 编译后用 sample.txt 自测。 可操作范围:只在分给你的这

开始练习 →

修好 CRT 合并的溢出

场景:~/work/nt/crt.cpp 合并同余方程。模数都小的时候对,有一个模数到了 10^12 级就错了。 任务:修好合并那一步的乘法溢出。make 编译后用 sample.txt 自测;check 会用「小模数 + 大模数」的随机数

开始练习 →

找出 CRT 的反例

场景:~/work/nt/crtbad.cpp 解两个同余方程,却直接套用了「模数两两互质」的公式。 任务:按 ~/题目.txt 的要求(m1 是指定的数,m2 ≤ 1000)找一组 r1 m1 r2 m2,让它的输出和正确答案不一样,写进

开始练习 →