Count Sequences
Count Sequences
考虑枚举序列的长度为\(i\),相当于从\(R-L+1\)种数选\(i\)个的组合方案数。
\(ans=\sum\limits_{i=1}^{n}{\binom{R-L+i}{i}}\)
令\(k=R-L\)
\(ans=\sum\limits_{i=1}^{n}{\binom{k+i}{k}}=\sum\limits_{i=1}^{n+k}{\binom{i}{k}}\)
由变上项求和公式得:
\(ans=\binom{n+k+1}{k+1}-1=\binom{n+R-L+1}{R-L+1}-1\)
#include<bits/stdc++.h>
using namespace std;
int mod=1e6+3;
long long pre[2000005],inv[2000005];
int T;
long long n,m,l,r;
long long qk(long long x,int y){
long long res=1;
while(y){
if(y&1){
res*=x;
res%=mod;
}
x*=x;x%=mod;
y>>=1;
}
return res;
}
void init(int x){
pre[0]=1;
for(int i=1;i<=x;i++){
pre[i]=pre[i-1]*i%mod;
}
}
long long C(long long x,long long y){
if(y>x)return 0;
return ((pre[x]*qk(pre[y],mod-2))%mod*qk(pre[x-y],mod-2)%mod);
}
long long Lucas(long long x,long long y){
if(!y)return 1;
return C(x%mod,y%mod)*Lucas(x/mod,y/mod)%mod;
}
int main(){
init(mod);
scanf("%d",&T);
while(T--){
scanf("%lld %lld %lld",&n,&l,&r);
printf("%lld\n",(Lucas(r-l+n+1,r-l+1)-1+mod)%mod);
}
}

浙公网安备 33010602011771号