WA on #6
感觉自己的思路应该是和题解里面差不多的。
样例和前五个点都过了,应该是小错误。
#include<bits/stdc++.h>
#define ri register int
#define ll long long
using namespace std;
const int maxn=2e6+5,mod=998244853;
ll jc[maxn];
int n,m;
ll qpow(ll a,int b,ll p){
ll ans=1;
while(b){
if(b&1)ans=ans*a%p;
a=a*a%p;
b>>=1;
}return ans;
}
ll inv[maxn];
ll C(int a,int b){
if(a<0||b>a||b<0)return 0;
return jc[a]*inv[b]%mod*inv[a-b]%mod;
}
ll a[maxn],b[maxn];
signed main(){
ios::sync_with_stdio(0);
jc[0]=1;
for(ri i=1;i<=2e6;i++)jc[i]=jc[i-1]*i%mod;
inv[int(2e6)]=qpow(jc[int(2e6)],mod-2,mod);
for(ri i=2e6;i;i--){
inv[i-1]=inv[i]*i%mod;
}
cin>>n>>m;
for(ri i=0;i<=n;i++){
if(i<n-m)a[i]=0;
else a[i]=(C(n+m,n)-C(n+m,i+1+n)+mod)%mod;
// cout<<a[i]<<' ';
}
for(ri i=1;i<=n;i++)b[i]=(a[i]-a[i-1]+mod)%mod;
// for(ri i=1;i<=n;i++)cout<<i<<' '<<b[i]<<endl;
ll ans=0;
for(ri i=1;i<=n;i++){
ans=(ans+b[i]*i%mod)%mod;
}cout<<ans;
return 0;
}