[bzoj2982] combination

Posted czllgzmzl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[bzoj2982] combination相关的知识,希望对你有一定的参考价值。

  这题面D人D得好狠啊

  求组合数。。模数10007所以lucas一发。。

  求一波逆元算较小的组合数。或者暴力跑也可以

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define ll long long
 6 using namespace std;
 7 const int modd=10007;
 8 int jc[modd],ny[modd];
 9 int i,j,k,n,m;
10 bool gg;
11  
12 int ra;char rx;
13 inline int read(){
14     rx=getchar(),ra=0;
15     while(rx<\'0\'||rx>\'9\')rx=getchar();
16     while(rx>=\'0\'&&rx<=\'9\')ra*=10,ra+=rx-48,rx=getchar();return ra;
17 }
18 inline int poi(int a,int b){
19     int c=1;
20     while(b){
21         if(b&1)c=c*a%modd;
22         b>>=1,a=a*a%modd;
23     }return c;
24 }
25 inline int getc(int n,int m){
26     if(n<m)return 0;
27     return 1LL*jc[n]*ny[m]*ny[n-m]%modd;
28 }
29 inline int lucas(int n,int m){
30     if(n<modd&&m<modd)return getc(n,m);
31     else return lucas(n/modd,m/modd)*getc(n%modd,m%modd)%modd;
32 }
33 int main(){
34     n=read();
35     for(i=jc[0]=ny[0]=1;i<modd;i++)jc[i]=jc[i-1]*i%modd,ny[i]=poi(jc[i],modd-2);
36     while(n--)j=read(),printf("%d\\n",lucas(j,read()));
37     return 0;
38 }
39 
View Code

 

以上是关于[bzoj2982] combination的主要内容,如果未能解决你的问题,请参考以下文章

bzoj——2982: combination

BZOJ 2982 combination

bzoj 2982 combination

bzoj2982: combination(lucas定理板子)

BZOJ2982combination Lucas定理

[BZOJ2982]combination Lucas定理