Submission #39108354


Source Code Expand

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define op(x) ((x&1)?x+1:x-1)
#define odd(x) (x&1)
#define even(x) (!odd(x))
#define lc(x) (x<<1)
#define rc(x) (lc(x)|1)
#define lowbit(x) (x&-x)
#define mp(x,y) make_pair(x,y)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
using namespace std;
const int MAXN=1e6+10,LIM=1e6,mod=1e9+7;
void add(ll& x,ll y){x=(x+y)%mod;}
void sub(ll& x,ll y){x=(x-y+mod)%mod;}
ll mypow(ll a,ll n){
	if(!n)return 1;
	ll tmp=mypow(a,n/2);tmp=tmp*tmp%mod;
	if(n&1)tmp=tmp*a%mod;return tmp;
}
ll myinv(ll a){return mypow(a,mod-2);}

ll fact[MAXN],rfact[MAXN];
void pre(){
	fact[0]=1;
	rep(i,1,LIM)fact[i]=fact[i-1]*i%mod;
	rfact[LIM]=myinv(fact[LIM]);
	per(i,LIM-1,0)rfact[i]=rfact[i+1]*(i+1)%mod;
}
ll C(ll n,ll m){
	if(n<m || m<0)return 0;
	return fact[n]*rfact[m]%mod*rfact[n-m]%mod;
}
ll P(ll n){return (n%2)?(mod-1):(1);}

ll n,m,L,R,ans;

namespace CFM{
	ll G[MAXN];
	ll F(ll V,ll S){
		//前面m个取[0,V]和为S的方案数
		if(S<0)return 0;
		ll res=0;
		rep(i,0,m)if(i*(V+1)>S)break;else{
			ll rest=S-i*(V+1);
			ll num=P(i)*C(m,i)%mod;
			num=num*G[rest]%mod;
			
			add(res,num);
		}
		return res;
	}
	ll calc(ll x,ll k){ //a[m]=x
		ll res=F(x,k-(n-m)*(x+1));
		if(x){
			sub(res,F(x-1,k-(n-m)*(x+1)));
		}
		return res;
	}
	ll solve(ll k){ //和不超过k	
		//分母(1-x)^{-(n+1)}
		ll ans=C(n+k,k); //总数

		rep(i,0,k)G[i]=C(n+i,i);

		//去掉xm不等于xm+1的

		rep(a,0,k){

			sub(ans,calc(a,k)*C(n,m)%mod);
		}

		return ans;
	}
}
int main(){
	pre();

	cin>>n>>m>>L>>R;
	m=n-m;
	
	add(ans,CFM::solve(R));
	sub(ans,CFM::solve(L-1));

	cout<<ans<<endl;

    return 0;
}

Submission Info

Submission Time
Task F - Candy Retribution
User Crying
Language C++ (GCC 9.2.1)
Score 1000
Code Size 1803 Byte
Status AC
Exec Time 204 ms
Memory 21596 KiB

Compile Error

./Main.cpp: In function ‘ll mypow(ll, ll)’:
./Main.cpp:21:2: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
   21 |  if(n&1)tmp=tmp*a%mod;return tmp;
      |  ^~
./Main.cpp:21:23: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
   21 |  if(n&1)tmp=tmp*a%mod;return tmp;
      |                       ^~~~~~

Judge Result

Set Name Sample Subtask1
Score / Max Score 0 / 0 1000 / 1000
Status
AC × 3
AC × 40
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.txt, sample_03.txt, sub1_01.txt, sub1_02.txt, sub1_03.txt, sub1_04.txt, sub1_05.txt, sub1_06.txt, sub1_07.txt, sub1_08.txt, sub1_09.txt, sub1_10.txt, sub1_11.txt, sub1_12.txt, sub1_13.txt, sub1_14.txt, sub1_15.txt, sub1_16.txt, sub1_17.txt, sub1_18.txt, sub1_19.txt, sub1_20.txt, sub1_21.txt, sub1_22.txt, sub1_23.txt, sub1_24.txt, sub1_25.txt, sub1_26.txt, sub1_27.txt, sub1_28.txt, sub1_29.txt, sub1_30.txt, sub1_31.txt, sub1_32.txt, sub1_33.txt, sub1_34.txt, sub1_35.txt, sub1_36.txt, sub1_37.txt
Case Name Status Exec Time Memory
sample_01.txt AC 28 ms 19252 KiB
sample_02.txt AC 24 ms 19068 KiB
sample_03.txt AC 52 ms 20924 KiB
sub1_01.txt AC 121 ms 20696 KiB
sub1_02.txt AC 28 ms 19840 KiB
sub1_03.txt AC 47 ms 20240 KiB
sub1_04.txt AC 31 ms 20028 KiB
sub1_05.txt AC 57 ms 20348 KiB
sub1_06.txt AC 56 ms 20624 KiB
sub1_07.txt AC 56 ms 20564 KiB
sub1_08.txt AC 105 ms 20708 KiB
sub1_09.txt AC 147 ms 20568 KiB
sub1_10.txt AC 193 ms 21432 KiB
sub1_11.txt AC 178 ms 21548 KiB
sub1_12.txt AC 148 ms 21404 KiB
sub1_13.txt AC 37 ms 21568 KiB
sub1_14.txt AC 64 ms 21496 KiB
sub1_15.txt AC 204 ms 21560 KiB
sub1_16.txt AC 79 ms 21536 KiB
sub1_17.txt AC 69 ms 20628 KiB
sub1_18.txt AC 32 ms 21500 KiB
sub1_19.txt AC 30 ms 20708 KiB
sub1_20.txt AC 23 ms 19068 KiB
sub1_21.txt AC 23 ms 19064 KiB
sub1_22.txt AC 27 ms 19216 KiB
sub1_23.txt AC 25 ms 19160 KiB
sub1_24.txt AC 24 ms 19228 KiB
sub1_25.txt AC 27 ms 19216 KiB
sub1_26.txt AC 191 ms 21356 KiB
sub1_27.txt AC 33 ms 21500 KiB
sub1_28.txt AC 179 ms 21412 KiB
sub1_29.txt AC 22 ms 19148 KiB
sub1_30.txt AC 28 ms 19228 KiB
sub1_31.txt AC 33 ms 21596 KiB
sub1_32.txt AC 37 ms 21536 KiB
sub1_33.txt AC 52 ms 21480 KiB
sub1_34.txt AC 40 ms 21532 KiB
sub1_35.txt AC 30 ms 21532 KiB
sub1_36.txt AC 40 ms 21060 KiB
sub1_37.txt AC 118 ms 21412 KiB