补全:分母用逆元
补全 comb:除以分母要乘分母的逆元。补全后输出 C(10, 3)。 本节模型:comb(n, k, p) 分子分母各自连乘,分母乘费马逆元。 (本题用 g++ -std=c++17 -O0 编译。)
阶乘数组占多少内存
long long fact[1000001] 大约占【0】。
阶乘逆元为什么倒着推
第 1 步:上:阶乘;下:阶乘的逆元 第 2 步:顺着乘一遍:每格乘上 i 第 3 步:只对最后一格求一次逆元 第 4 步:再倒着乘 i,一路推回去 第 5 步:以后每个组合数都是 O(1) 1 1 2 6 11 3 9 6 11 7 1
线性求逆元要多久
用递推 inv[i] = (p - p/i)·inv[p % i] % p 求 1..n 的逆元,总共要【0】。
一百万个 long long 多大
运行下面这段程序: #include <array> #include <iostream> #include <string> #include <vector> using namespa
预处理后查一个组合数
运行下面这段程序: 本节模型:fact、inv_fact 两个全局数组开到 10^6,prepare() 顺着乘出阶乘、倒着推出阶乘逆元,之后 C(n, k) 都是 O(1)。 #include <array> #include
补全:顺着乘出阶乘表
补全 prepare() 里阶乘那一行:fact[i] = fact[i-1]·i,每一步取模。补全后输出 C(1000000, 500000)。 本节模型:fact、inv_fact 两个全局数组开到 10^6,prepare() 顺着乘
补全:倒着推阶乘逆元
补全 prepare() 里倒推那一行:inv_fact[i-1] = inv_fact[i]·i。补全后输出 C(10, 3)。 本节模型:fact、inv_fact 两个全局数组开到 10^6,prepare() 顺着乘出阶乘、倒着推出
补全:线性递推逆元
补全 prepare_inv() 的递推,算出 1..10^6 的全部逆元。补全后输出它们的和模 10^9+7。 (本题用 g++ -std=c++17 -O0 编译。)
补全:组合数查询
补全 C(n, k):fact[n]·inv_fact[k]·inv_fact[n-k],每乘一次取一次模。补全后输出 C(10^6, k) 对 k=0..10^6 求和模 10^9+7。 本节模型:fact、inv_fact 两个全局数组