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

    插一块板表示让这个数字+1,问题转化为对于长度为1~n的序列,插入r-l块板(首尾也可以插板,每个点板数不限),有多少种方案,即求$\sum_{i=1}^{n}c(r-l+i,r-l)$
    考虑该式,再补上一项c(r-l+1,r-l+1),原式=$\sum_{I=1}^{n}c(r-l+i,r-l)+c(r-l+1,r-l+1)-1=\sum_{I=2}^{n}c(r-l+i,r-l)+c(r-l+2,r-l+1)-1=……=c(r-l+n+1,r-l+1)-1$,用Lucas计算即可

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define mod 1000003
     4 int t,n,l,r,fac[mod],inv[mod];
     5 int c(int n,int m){
     6     if (n<m)return 0;
     7     return 1LL*fac[n]*inv[m]%mod*inv[n-m]%mod;
     8 }
     9 int main(){
    10     scanf("%d",&t);
    11     fac[0]=inv[0]=inv[1]=1;
    12     for(int i=1;i<mod;i++)fac[i]=1LL*fac[i-1]*i%mod;
    13     for(int i=2;i<mod;i++)inv[i]=1LL*(mod-mod/i)*inv[mod%i]%mod;
    14     for(int i=2;i<mod;i++)inv[i]=1LL*inv[i-1]*inv[i]%mod;
    15     while (t--){
    16         scanf("%d%d%d",&n,&l,&r);
    17         l=r-l+1;
    18         printf("%lld\n",(1LL*c((n+l)/mod,l/mod)*c((n+l)%mod,l%mod)+mod-1)%mod);
    19     }
    20 } 
    View Code
  • 相关阅读:
    反射学习笔记
    路由机制
    缓存笔记
    进程和线程
    垃圾回收机制
    堆和栈
    值类型和引用类型及参数传递
    招到一个程序员很难吗?
    全面讲解:委托、事件
    struts2入门实例
  • 原文地址:https://www.cnblogs.com/PYWBKTDA/p/11280245.html
Copyright © 2011-2022 走看看