4403: 序列统计

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 328  Solved: 162
[Submit][Status][Discuss]

Description

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

Input

输入第一行包含一个整数T,表示数据组数。第2到第T+1行每行包含三个整数N、L和R,N、L和R的意义如题所述。

Output

输出包含T行,每行有一个数字,表示你所求出的答案对106+3取模的结果。

Sample Input

21 4 52 4 5

Sample Output

25

HINT

提示

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

【数据规模和约定】对于100%的数据,1≤N,L,R≤10^9,1≤T≤100,输入数据保证L≤R。

Source

By yts1999

题解:

Lucas定理+组合数学

公式推导见:http://blog.csdn.net/lych_cys/article/details/50616439

公式化简见:http://blog.csdn.net/popoqqq/article/details/50636866

化简:

设k=r-l;

ans=∑(i=1……n)C(i+k,k)

可以利用杨辉三角,C(n,m)=C(n-1,m)+C(n-1,m-1);

ans=C(1+k,k)+C(2+k,k)+C(3+k,k)+……+C(n+k,k)

=C(1+k,1+k)-1+C(1+k,k)+C(2+k,k)+C(3+k,k)+……+C(n+k,k)

=(C(1+k,1+k)+C(1+k,k))+C(2+k,k)+C(3+k,k)+……+C(n+k,k)-1

=(C(2+k,1+k)+C(2+k,k))+C(3+k,k)+……+C(n+k,k)-1

=(C(3+k,1+k)+C(3+k,k))+……+C(n+k,k)-1

……

=C(n+k+1,k+1)-1

直接Lucas定理搞就可以了

注意输出要写 ((ans-1LL)%MOD+MOD)%MOD ,要不会WA(输出-1了)

 #include<bits/stdc++.h>
using namespace std;
#define MOD 1000003
#define LL long long
LL jc[MOD+];
int read()
{
int s=,fh=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')fh=-;ch=getchar();}
while(ch>=''&&ch<=''){s=s*+(ch-'');ch=getchar();}
return s*fh;
}
LL ksm(LL bb,LL pp,LL kk)
{
LL s=1LL;
while(pp>0LL)
{
if(pp%2LL!=0LL)s=(s*bb)%kk;
pp/=2LL;
bb=(bb*bb)%kk;
}
return s;
}
LL C(int n,int m,int P)
{
if(m>n)return 0LL;
if(n-m<m)m=n-m;
return (jc[n]*ksm((jc[m]*jc[n-m])%P,P-,P))%P;
}
LL Lucas(int n,int m,int P)
{
if(m==)return 1LL;
return (C(n%P,m%P,P)*Lucas(n/P,m/P,P))%P;
}
void cljc()
{
jc[]=1LL;
for(int i=;i<=MOD;i++)jc[i]=(jc[i-]*i)%MOD;
}
int main()
{
int k,l,r,n,T;
LL ans;
cljc();
T=read();
while(T--)
{
n=read();l=read();r=read();
k=r-l;
ans=Lucas(k+n+,k+,MOD);
printf("%lld\n",((ans-1LL)%MOD+MOD)%MOD);
}
fclose(stdin);
fclose(stdout);
return ;
}

Bzoj 4403: 序列统计 Lucas定理,组合数学,数论的更多相关文章

  1. bzoj 4403 序列统计 卢卡斯定理

    4403:序列统计 Time Limit: 3 Sec  Memory Limit: 128 MB Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调 ...

  2. BZOJ 4403: 序列统计 数学 lucas

    4403: 序列统计 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4403 Description 给定三个正整数N.L和R,统计长度在 ...

  3. 【BZOJ4403】序列统计 Lucas定理

    [BZOJ4403]序列统计 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第 ...

  4. bzoj 4403: 序列统计【lucas+组合数学】

    首先,给一个单调不降序列的第i位+i,这样就变成了单调上升序列,设原来数据范围是(l,r),改过之后变成了(l+1,r+n) 在m个数里选长为n的一个单调上升序列的方案数为\( C_m^n \),也就 ...

  5. BZOJ 4403 序列统计(Lucas)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4403 [题目大意] 给定三个正整数N.L和R,统计长度在1到N之间, 元素大小都在L到 ...

  6. [BZOJ 4403]序列统计

    Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组 ...

  7. bzoj 4403 序列统计——转化成组合数的思路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4403 先说说自己的想法吧. 设f[ i ][ j ]表示当前在倒数第 i 个位置,当前和后面 ...

  8. 【BZOJ 4403】 4403: 序列统计 (卢卡斯定理)

    4403: 序列统计 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 653  Solved: 320 Description 给定三个正整数N.L和R, ...

  9. BZOJ4403 序列统计—Lucas你好

    绝对是全网写的最详细的一篇题解  题目:序列统计 代码难度:简单 思维难度:提高+-省选 讲下题面:给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案 ...

随机推荐

  1. struts2 标签的使用之二 s:iterator

    struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo:s:iterator 标签有3个属性:    value:被迭代的集合    id   :指定集 ...

  2. ZOJ 1008 Gnome Tetravex(DFS)

    题目链接 题意 : 将n*n个正方形进行排列,需要判断相邻的正方形的相邻三角形上边的数字是不是都相等. 思路 : 只知道是个深搜,一开始不知道怎么搜,后来看了题解才明白,就是说不是自己去搜,而是将给定 ...

  3. 在NEXUS中加入自己定义的第三方PROXIES代理库

    就是要等会耐心,更新好之后,才能在PUBLIC库里进行操作. 下图是JBOSS的

  4. Qt官网变更【2012】

    Qt最近被Digia完全收购,诺基亚这两年的不理不睬,没有魄力,不仅断送了他的手机霸主地位,也耽误了Qt这两年的快速发展. 希望Digia能让Qt真正实现 run everywhere. 最近Qt的官 ...

  5. 理解TCP/IP协议

    TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议. 单从TCP/IP协议这个名称看,好多人误 ...

  6. sc.exe管理系统服务

    sc.exe管理系统服务 下面介绍SC,SC QC,and SC QUERY sc.exe create HomerSatelliteDesktopGC binPath= "D:XXXXXX ...

  7. DIV内英文或者数字不换行的问题 解决办法

    word-wrap:break-word; word-break:break-all;

  8. A9系统时钟用外部

     问个笨蛋的问题,,电脑主板的主频是由外部时钟倍频得来,还是内部时钟倍频?? [ARM11]瘋子 2015/5/5 19:08:16 @蓝凌风 [x86]蓝凌 2015/5/5 19:08:25 外部 ...

  9. default parameter value for ‘color’ must be a compile-time constant

    定义了一个函数,函数有一个参数是Color类型的可选参数,想要设置其默认值为Color.Black http://stackoverflow.com/questions/2804395/c-sharp ...

  10. Android开发之IP拨号器原理

    IP拨号器,使用了Android的广播接收者(BroadCastReceiver),在广播中把已保存的ip号码放在拨打电话号码的前面(getResultData()),然后把修改后的号码设置到广播中( ...