zoukankan      html  css  js  c++  java
  • [BZOJ4403]序列统计

    有个套路:计算单调不降的,可以给第i项加一个i,转化成单调递增的,然后就变成了在值域[L+1,R+N]中取1~n个数。

    复制一下popoqqq大佬的图片

    M=R-L+1。

    式子就变成了这个样子。

    Lucas定理随便做了。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int mod=1e6+3;
    int n,l,r,T;long long fac[mod+5],inv[mod+5];
    long long solve(long long x,long long y) {
        if(y<x) return 0;
        if(x<mod&&y<mod) {return (fac[y]*inv[x]%mod)*inv[y-x]%mod;}
        return solve(x%mod,y%mod)*solve(x/mod,y/mod)%mod;
    }
    long long ksm(long long d,int z) {
        long long res=1;
        while(z) {
            if(z&1) res=res*d%mod;
            d=d*d%mod;
            z>>=1;
        }
        return res;
    }
    int main() {
        scanf("%d",&T);
        fac[1]=fac[0]=1;
        for(long long i=2;i<=mod;i++) fac[i]=(fac[i-1]*i)%mod;
        inv[mod-1]=ksm(fac[mod-1],mod-2);
        for(long long i=mod-2;i;i--) inv[i]=(inv[i+1]*(i+1)%mod);
        inv[0]=1;
        while(T--) {
            scanf("%d%d%d",&n,&l,&r);
            printf("%d
    ",(solve(r-l+1,r+n-l+1)-1+mod)%mod);
        }
    }
    序列统计
    我是咸鱼。转载博客请征得博主同意Orz
  • 相关阅读:
    PLL详解
    CSI-2 协议
    C语言volatile关键字的用法
    联合体(union)的使用方法及其本质
    Linux驱动之LED驱动编写
    insmod 和第一个驱动
    黑电平校正BLC
    什么是HDR?
    使用starUML画顺序图
    UML 资料整理
  • 原文地址:https://www.cnblogs.com/sdfzhsz/p/9743333.html
Copyright © 2011-2022 走看看