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. 基于局部敏感哈希的协同过滤算法之simHash算法

    搜集了快一个月的资料,虽然不完全懂,但还是先慢慢写着吧,说不定就有思路了呢. 开源的最大好处是会让作者对脏乱臭的代码有羞耻感. 当一个做推荐系统的部门开始重视[数据清理,数据标柱,效果评测,数据统计, ...

  2. Java中堆、栈、常量池分析

    栈用于存储局部变量,包括基本类型的变量(方法语句块内部定义的变量.方法中的形参).引用类型的变量,它们都是存储在各自的方法栈中,随着方法的执行完成而消失: 堆用于存储引用类型变量所指向的对象,包括普通 ...

  3. python参考手册--第3章类型和对象

    1.对象的身份.类型.值 (1)身份:对象在内存中位置的指针,地址值, >>> a = [1,2,3,4,5] >>> id(a)48497328 >> ...

  4. iphone绘图的几个基本概念CGPoint、CGSize、CGRect、CGRectMake、window(窗口)、视图(view)

    我一般情况下不会使用interface builder去画界面,而是用纯代码去创建界面,不是装B,而是刚从vi转到xcode不久,不太习惯interface builder而已.当然如果需要我也会使用 ...

  5. Tornado,展示一下模板渲染

    按网上一步一步走一下. 感觉模板和DJANGO的差不多,但更灵活,不限制PYTHON的使用. 前端和后端,这模板使用的规则在哪里呢? import os.path import tornado.htt ...

  6. easyui源码翻译1.32+API翻译全篇导航 (提供下载源码)

    前言 EasyUI每个组件都会有 属性.方法.事件 属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面.例如,对话框属性定义在jQuery.fn.dialog.defa ...

  7. Django Navi 重用

    代码来自这里: base.html <html> <head>...</head> <body> ... {% block nav %} <ul ...

  8. CodeForces152C——Pocket Book(排列组合问题)

    Pocket Book DescriptionOne day little Vasya found mom's pocket book. The book had n names of her fri ...

  9. uboot源码整体框架

    源码解压以后,我们可以看到以下的文件和文件夹:  cpu 与处理器相关的文件.每个子目录中都包括cpu.c和interrupt.c.start.S.u-boot.lds. cpu.c:初始化CPU.设 ...

  10. C#中保留2位小数

    public static void Method() { double a = 1.991; a = Math.Round(a); Console.WriteLine("a = {0}&q ...