【bzoj2982】 combination LUCAS定理
2015-09-21 13:51
357 查看
线性筛逆元+lucas定理,没什么难的,只是要注意算阶乘的时候只能算到mod-1,否则会出0。
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<iostream> #include<algorithm> #define mod 10007 using namespace std; int fac[100010],inv[100010]; int n,m,T; int power(long long x,int k) { long long ans=1; while (k) { if (k&1) ans=ans*x%mod; x=x*x%mod; k>>=1; } return ans; } int C(int x,int y) { if (x<y) return 0; if (x<mod && y<mod) return (long long)(fac[x]*inv[y]%mod)*inv[x-y]%mod; return (long long)C(x%mod,y%mod)*C(x/mod,y/mod)%mod; } int main() { scanf("%d",&T); fac[0]=1; for (int i=1;i<10007;i++) fac[i]=(long long)fac[i-1]*i%mod; inv[10006]=power(fac[10006],mod-2); for (int i=10005;i>=0;i--) inv[i]=(inv[i+1]*(i+1))%mod; while (T--) { scanf("%d%d",&n,&m); printf("%d\n",C(n,m)); } return 0; }
相关文章推荐
- mac版本android studio 较为常用的快捷键
- python 字符串编程技巧
- 使用 Ajax
- 改变文件权限:chmod(转)
- C#中List的Find方法的使用
- 苹果电脑截图方法
- ASP.NET MVC4系列页面缓存、缓存依赖SQL(真实项目注意细节)
- Java ee 规范
- Swift 第十课继承
- Lua基本函数库——新手必备
- Sturts2如何获取request参数
- 使用Shell脚本对Linux系统和进程资源进行监控 http://www.csdn.net/article/2012-06-26/2806898
- c++学习笔记
- 完美解决android Studio打开报错 https://code.google.com/p/android/issues
- 如何在App中实现朋友圈功能之一朋友圈实现原理浅析——箭扣科技Arrownock
- Android混淆编译
- 程序猿的幽默你不懂--段子精选
- CentOS 6.5安全加固及性能优化
- VIM中的翻页命令
- 一个PostgreSQL用户眼里的Oracle性能优化