@[WZRYWZWY](/user/704668) 这个真的对吗,$inv_N$ 被更新了两次诶)
by 沉石鱼惊旋 @ 2024-04-22 19:44:01
```cpp
int qpow(int a,int b){
int res=1;
while(b){
if(b&1) res=(res*a)%Mod;
a=(a*a)%Mod;
b>>=1;
}
return res;
}
void init(){
fac[0]=1;
for(int i=1;i<=M;++i) fac[i]=(fac[i-1]*i)%Mod;
inv[M]=qpow(fac[M],Mod-2);
for(int i=M;i>=1;--i) inv[i-1]=(inv[i]*i)%Mod;
}
```
@[沉石鱼惊旋](/user/516346) 那就这样。
by amend @ 2024-04-22 20:05:24
@[WZRYWZWY](/user/704668) 线性的应该不怎么用卡常吧,如果带个 `log` 就不好说了。
by int233 @ 2024-04-22 20:15:58
@[沉石鱼惊旋](/user/516346)
哦,那就把
```
for (int i = N; i >= 1; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
```
改成
```
for (int i = N-1; i >= 1; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
```
by WZRYWZWY @ 2024-04-24 17:48:31
其实我的代码里是N-1的,可能是不小心删了
by WZRYWZWY @ 2024-04-24 17:50:31