Jeanny
寂兮,寥兮,独立不改,周行而不殆

大整数拆分

由 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;
}

 

posted on 2020-06-05 14:25  Jeanny  阅读(130)  评论(0)    收藏  举报