注意, p \bmod i < i,又因为在递推的过程中,我们已经求出了所有小于 i 的在模 p 意义下的乘法逆元,可表示为 q^{-1}, q<i。从 \frac{p}{i} 改成p - \frac{p}{i} 是因为我们的运算符是同余,系数可以随便改。
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n, p, inv[3000006];
signed main() {
cin >> n >> p;
for (int i = 1; i <= n; i++) {
if (i == 1) inv[i] = 1;
else inv[i] = (long long)(p - p / i) * inv[p % i] % p;
}
for (int i = 1; i <= n; i++)
cout << inv[i] << "\n";
return 0;
}