乘法逆元板板求调试

P1641 [SCOI2010] 生成字符串

@[Skies](/user/125212) 把东西分开写就好了,一堆。真心看不懂。 ```cpp #include<bits/stdc++.h> using namespace std; #define int long long const int mod = 20100403; const int N=5e6+10; int jie[N]; int Pow(int x,int y) { int a = 1; for(;y;y>>=1,x=x*1ll*x%mod)if(y&1)a = x *1ll * a % mod;return a; /* if(y==0)return 1%mod; if(y==1)return x%mod; int u=Pow(x,y/2)%mod; if(y&1) { return u*u%mod*x%mod; }else{ return u*u%mod; } */ } int Inv(int a) {return Pow(a,mod-2);} int C(int a,int b) { return jie[a]*(Inv(jie[a-b]) * Inv(jie[b]) % mod) % mod; } signed main() { int n,m; cin>>n>>m; jie[0]=1; for(int i=1;i<=n+m+1;i++) { jie[i]=jie[i-1]*i%mod;//预处理阶乘 } int ans = (C(m+n,m) - C(n + m,m - 1))%mod; // ans=(ans+mod)%mod; // int ans=jie[m+n]*Pow(jie[m],mod-2)%mod*Pow(jie[n],mod-2)%mod-jie[m+n]*Pow(jie[m-1],mod-2)%mod*Pow(jie[n+1],mod-2)%mod; //带公式 cout<<(int)((ans%mod)+mod)%mod; return 0; } ```
by JK_LOVER @ 2020-10-23 15:12:58


@[Skies](/user/125212) 哦,我知道了,你开了 unsigned long long 在减法时炸了。变成了一个大数。换成long long就可以了。
by JK_LOVER @ 2020-10-23 15:17:33


@[JK_LOVER](/user/227824) 谢谢,非常感谢
by Skies @ 2020-10-23 15:30:58


|