【算法】组合数取模——lucas定理

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int p=10007;
int fac[p+10],inv[p+10];
void gcd(int a,int b,int &x,int &y)
{if(b==0){x=1;y=0;}else{gcd(b,a%b,y,x);y-=x*(a/b);}
}
void pre_inv()
{fac[0]=fac[1]=1;for(int i=2;i<p;i++)fac[i]=(fac[i-1]*i)%p;int xx,yy;gcd(fac[p-1],p,xx,yy);inv[p-1]=((xx%p)+p)%p;//扩欧解不一定是最小非负解! for(int i=p-2;i>=0;i--)inv[i]=(inv[i+1]*(i+1))%p;
}
int C(int n,int m)
{if(n<m)return 0;if(n<p&&m<p)return (1ll*fac[n]*inv[m]*inv[n-m])%p;return (C(n%p,m%p)*C(n/p,m/p))%p;
}
int main()
{pre_inv();int T,n,m;scanf("%d",&T);//for(int i=0;i<10;i++)printf("inv_%d=%d\n",i,inv[i]);while(T--){scanf("%d%d",&n,&m);printf("%d\n",C(n,m));}return 0;
}

View Code

转载于:https://www.cnblogs.com/onioncyc/p/7136684.html

【BZOJ】2982 combination相关推荐

  1. 【BZOJ】1707: [Usaco2007 Nov]tanning分配防晒霜

    [算法]贪心扫描线(+堆) [题意]给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数. [题解] 参考:[bzoj1707]: [U ...

  2. 【BZOJ】【1041】【HAOI2008】圆周上的点

    数学 orz hzwer 完全不会做-- 很纠结啊,如果将来再遇到这种题,还是很难下手啊-- 引用题解: [分析]: 样例图示: 首先,最暴力的算法显而易见:枚举x轴上的每个点,带入圆的方程,检查是否 ...

  3. 【BZOJ】【1036】树的统计

    嗯这题是一道对树进行动态修改&查询的经典题目,可以拿来练习树链剖分~ 啊对于这种动态修改&查询的题目,我们最喜闻乐见的就是在一个序列上去做了,毕竟可以直接套各种数据结构模版啊,比如线段 ...

  4. 【BZOJ】【3442】学习小组

    网络流/费用流 orz zyf 裸的费用流,根据题目描述即可建出如下的图: S->i 费用表示每有一个加入第 i 个小组的学生,需要花的钱,由于是跟流量(人数)的二次方相关,所以要拆边--然后每 ...

  5. 【BZOJ】1711: [Usaco2007 Open]Dining吃饭

    [算法]最大流 [题解] S连向食物连向牛连向牛'连向饮料连向T. 经典的一个元素依赖于两个元素的建图方式. #include<cstdio> #include<algorithm& ...

  6. 【BZOJ】2099: [Usaco2010 Dec]Letter 恐吓信

    [题意]给定长度为n和m的两个字符串S和T,要求在字符串S中取出若干段拼成T(可重复取),求最小段数,n,m<=50000. [算法]后缀自动机 || 后缀数组 [题解]对串S建SAM,然后在上 ...

  7. 【BZOJ】1299: [LLH邀请赛]巧克力棒

    [算法]博弈论 [题解]这道题不是典型的SG函数题了. 不把它当成游戏看待,那么这道题是在说n个石子堆,每次可以加入若干个或进行Nim游戏. 我们当前先手,则考虑构造必败态来获胜. 当前已加入的NIm ...

  8. 【BZOJ】1013 [JSOI2008]球形空间产生器sphere

    [算法]高斯消元 [题解] 建矩阵; for i 找到同列绝对值最大数字; 交换; for k(行) j(列)(倒序)   除法; for i(倒序) for j 减去已知元素 除到右边; #incl ...

  9. 【BZOJ】4032: [HEOI2015]最短不公共子串(LibreOJ #2123)

    [题意]给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一个最短 ...

最新文章

  1. 数组-在Shell脚本中的基本使用介绍
  2. vue2.0通过Axios导出excel文件(解决乱码问题)
  3. liferay和cas系统集成
  4. Knockout.js 学习 (六)-- 监控属性数组 applyBinding Observables
  5. 数据标准化的方法与意义
  6. javaWeb_JSP 动态指令 forward 的程序
  7. 4.2.1 OS之磁盘的结构(磁盘、磁道、扇区、盘面、柱面、磁头)
  8. java 日期 运算
  9. SAP Spartacus如何为不同的environment设置不同的baseUrl
  10. USF MSDS501 计算数据科学中文讲义·翻译完成
  11. python中int的用法归类
  12. python itchat模块登录失败_itchat模块的不明错误
  13. tableau如何生成HTML文件,Tableau 入门
  14. Java设计模式(六)装饰器模式-与代理模式的区别-项目实战应用
  15. Codeforces 136A Presents
  16. MySQL——事务(Transaction)详解
  17. 项目经理如何激励自己的团队
  18. IEduChina2019国际学校展暨国际教育论坛温暖深圳
  19. Catia V5-6R2016安装教程
  20. HDU:1998 奇数阶魔方(规律填数)

热门文章

  1. edittext禁止换行符但能自动换行简书_使用n-gram创建自动完成系统
  2. 树状选择框测试用例_【转】【测试用例设计】WEB通用测试用例
  3. vue 实现动态增加输入框_vue实现一个6个输入框的验证码输入组件
  4. excel在线_怎么能在线免费将PDF转Excel?
  5. tensorflow学习(4.loss函数以及正则化的使用 )
  6. 图像处理中常用数学知识
  7. 【CV夏季划】2021年冲刺CV秋招,100余课时从理论基础到进阶实践系统掌握
  8. 【杂谈】为什么Pytorch这么好用我还苦口婆心推荐初学者也学习一下caffe?
  9. 【AI初识境】如何增加深度学习模型的泛化能力
  10. 泰国基础教育管理实行新体制