2017.9.13 序列统计 思考记录

来源:互联网 发布:淘宝网12v 电池组 编辑:程序博客网 时间:2024/06/05 22:59

这题、打表找规律成功的典型,分分钟找到组合数

首先列出展开表,然后找组合数:


要注意的就是连加的组合数可以加起来考虑和,不要老想着对一堆组合数找数字规律,


码:

#include<iostream>#include<cstdio>using namespace std;#define P 1000003#define ll long longll ni[P<<1],jc[P<<1],i,T,l,r,n,m;ll C(ll m,ll n){if(n>m)return 0;if(m>P||n>P)     {     return(C(m/P,n/P)*C(m%P,n%P)%P);      }return jc[m]*ni[n]%P*ni[m-n]%P;}int main(){jc[0]=jc[1]=ni[0]=ni[1]=1;for(i=2;i<=P;i++)jc[i]=jc[i-1]*i%P;for(i=2;i<=P;i++)ni[i]=ni[P%i]*(P-P/i)%P;for(i=2;i<=P;i++)ni[i]=ni[i-1]*ni[i]%P;scanf("%lld",&T);while(T--){scanf("%lld",&n);scanf("%lld%lld",&l,&r);m=r-l+1;printf("%lld\n",((C(n+m,n)-1)+P)%P);    }}




原创粉丝点击