G. *【组合数:lucas定理】序列统计

    传统题 1000ms 128MiB

*【组合数:lucas定理】序列统计

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

Description

【题意】
给定三个正整数 $N \ L \ R$,统计长度在 $1$ 到 $N$ 之间,元素大小都在 $L$ 到 $R$ 之间的单调不降序列的数量。输出答案对 $10^6+3$ 取模的结果。

【输入格式】
第一行一个整数 $T$($1 \le T \le 100$) ,表示测试数据数。
每组数据一行三个整数 $N \ L \ R$ ($1 \le N \le 10^9$;$L \le R \le 10^9$)。

【输出格式】
每组数据一行行一个整数,表示所求出的答案对 $10^6+3$ 取模的结果。

【样例输入】
2
1 4 5
2 4 5

【样例输出】
2
5

【样例说明】
满足条件的2个序列为[4]和[5]。

Hint





#include<bits/stdc++.h> 
using namespace std; 
typedef long long LL; 
const LL P=1000003;
LL fac[1110000];
LL qpow(LL a,LL b)
{
	LL ans=1%P;a%=P;
	for(;b>0;b>>=1)
	{
		if(b&1)ans=ans*a%P;
		a=a*a%P;
	}
	return ans;
}
LL C(LL n,LL m)
{
	if(n<m) return 0;
	return fac[n]*qpow(fac[m],P-2)%P*qpow(fac[n-m],P-2)%P;
}
LL Lucas(LL n,LL m)
{
	if(m==0) return 1;
	return C(n%P,m%P)*Lucas(n/P,m/P)%P;
}
int main()  
{
	LL T,n,m,l,r;
	cin>>T;
	fac[0]=1;for(int i=1;i<=P;i++)fac[i]=fac[i-1]*i%P;
	while(T--)
	{
		cin>>n>>l>>r;
		LL ans= (Lucas(r-l+1+n,n)-1+P )%P;
		printf("%lld\n",ans);
	}
	return 0;  
}  




寒假0124上午:组合数学基础2

未参加
状态
已结束
规则
XCPC
题目
7
开始于
2025-1-24 9:00
结束于
2025-1-24 9:30
持续时间
0.5 小时
主持人
参赛人数
24