zoukankan      html  css  js  c++  java
  • bzoj4403题解

    【参考代码】

    #pragma GCC optimize(2)
    #include <cstdlib>
    #define function(type) __attribute__((optimize("-O2"))) inline type
    #define procedure __attribute__((optimize("-O2"))) inline void
    using namespace std;
    
    //quick_io {
    #include <cctype>
    #include <cstdio>
    function(long long) getint()
    {
    	char c=getchar(); for(;!isdigit(c)&&c!='-';c=getchar());
    	short s=1; for(;c=='-';c=getchar()) s*=-1; long long r=0;
    	for(;isdigit(c);c=getchar()) r=(r<<3)+(r<<1)+c-'0';
    	return s*r;
    }
    //} quick_io
    
    static const int AwD=1000003;
    
    function(int) format(const int&x) {return x+(x<0)*AwD;}
    
    function(int) mrev(const int&x)
    {
    	int ret=1,bas=x;
    	for(register int i=AwD-2;i;i>>=1,bas=1ll*bas*bas%AwD)
    	{
    		if(i&1) ret=1ll*ret*bas%AwD;
    	}
    	return ret;
    }
    
    int fact[AwD]={1};
    
    function(int) Lucas(const int&m,const int&n)
    {
    	div_t M=div(m,AwD),N=div(n,AwD);
    	if(M.quot<N.quot||M.rem<N.rem) return 0;
    	return 1ll*fact[M.quot]*fact[M.rem]*mrev(
    		1ll*fact[N.quot]*fact[N.rem]%AwD*fact[M.quot-N.quot]*fact[M.rem-N.rem]%AwD
    	)%AwD;
    }
    
    int main()
    {
    	for(register int i=1;i<AwD;++i) fact[i]=1ll*fact[i-1]*i%AwD;
    	for(register int T=getint();T--;)
    	{
    		int n=getint(),l=getint(),r=getint();
    		printf("%d
    ",format(Lucas(n-l+r+1,n)-1));
    	}
    	return 0;
    }
    
  • 相关阅读:
    wait与sleep区别?
    oracle死锁查询
    atomic 原子操作的类
    买票问题
    0001.第一个多线程demo--分批处理数据
    01: JavaScript实例
    01: 运维工作梳理
    04: 使用BeautifulSoup封装的xss过滤模块
    04: 打开tornado源码剖析处理过程
    03: 自定义异步非阻塞tornado框架
  • 原文地址:https://www.cnblogs.com/spactim/p/6513970.html
Copyright © 2011-2022 走看看