大整数拆分
由 1 ~ n-1 这 n-1 个数组成 l - c 到 r - c 闭区间内的数共有多少种组合方法.
对于20%的数据: 1≤N≤50;
对于50%的数据: 1≤N≤2000;
对于100%的数据: 1≤N≤100000, 1≤C≤1000000,C≤L≤R<C+N
https://blog.csdn.net/bigwinner888/article/details/104201358
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int M=998244353;
int f[2][100005],n,c,l,r,s;
int main()
{
freopen("hack.in","r",stdin);
freopen("hack.out","w",stdout);
cin>>n>>c>>l>>r;
l-=c;r-=c;
f[0][0]=1;
for(int i=1;(1+i)*i/2<=r;i++)
{
for(int j=(1+i)*i/2;j<=r;j++)
{
f[i&1][j]=(f[i&1][j-i]+f[(i-1)&1][j-i])%M;
if(l<=j&&j<=r) s=(s+f[i&1][j])%M;
}
memset(f[(i-1)&1],0,sizeof(f[(i-1)%1]));
}
cout<<s%M<<endl;
return 0;
}
浙公网安备 33010602011771号