码迷,mamicode.com
首页 > 其他好文 > 详细

[bzoj2982] combination

时间:2016-06-18 16:43:05      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

  这题面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

标签:

原文地址:http://www.cnblogs.com/czllgzmzl/p/5596302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!