[BZOJ 4403]序列统计(Lucas定理)

Description

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

Solution

一个Lucas定理的模板

C(r-l+1+n,r-l+1)-1的推导:http://blog.csdn.net/lych_cys/article/details/50616439

复制代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#define Mod 1000003
using namespace std;
typedef long long LL;
int T,n,l,r;
LL fac[Mod],inv[Mod];
void init()
{
    fac[0]=1,inv[1]=1;
    for(int i=1;i<Mod;i++)
    fac[i]=(fac[i-1]*i)%Mod;
    for(int i=2;i<Mod;i++)
    inv[i]=((Mod-Mod/i)*inv[Mod%i])%Mod;
    inv[0]=1;//inv[0]此时表示的是0的阶乘的逆,所以这句一定要加!
    for(int i=1;i<Mod;i++)
    inv[i]=(inv[i-1]*inv[i])%Mod;
}
LL C(LL x,LL y)
{
    if(x<y)return 0;
    if(x<Mod&&y<Mod)return ((fac[x]*inv[y])%Mod*inv[x-y])%Mod;
    else return (C(x/Mod,y/Mod)*C(x%Mod,y%Mod))%Mod;
}
int main()
{
    init();
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d%d",&n,&l,&r);
        printf("%d\n",(C(r-l+1+n,r-l+1)-1+Mod)%Mod);
    }
    return 0;
}
复制代码

 

posted @   Zars19  阅读(256)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
点击右上角即可分享
微信分享提示