求助 CE
查看原帖
求助 CE
852295
Mr_Vatican楼主2023/3/25 21:08
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,m,fac[20000005]={1},inv[20000005]={1},a[20000005]={1},mod=998244353,ans;
int qpow(int x,int y)
{
	int ret=1;
	for(;y;y>>=1,x=x*x%mod)
	{
		if(y&1)
			ret=ret*x%mod;
	}
	return ret;
}
int C(int x,int y)
{
	if(x<y) return 0;
	return fac[x]*inv[y]%mod*inv[x-y]%mod;
}
signed main()
{
	for(int i=1;i<=20000000;i++)
	{
		fac[i]=fac[i-1]*i%mod;
		inv[i]=inv[i-1]*qpow(i,mod-2)%mod;
	}
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=m;i++)
	{
		a[i]=(a[i-1]+C(n+i-1,n-1))%mod;
	}
	for(int i=0;i<=2;i++)
	{
		for(int j=0;j<=min(m-n-i+1,n-1);j++)
		{
			ans=(ans+C(n-1,i)*a[(m-n-i-j+1)/3])%mod;
		}
	}
	printf("%lld",ans);
}

2023/3/25 21:08
加载中...