LightOJ 1067 - Combinations【Lucas定理】
2016-03-14 08:46
344 查看
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1067
题意: 组合数求模,Lucas定理
代码:
题意: 组合数求模,Lucas定理
代码:
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <algorithm> #include <string.h> #include <iostream> using namespace std; const long long MOD = 1000003; long long pow(long long a, long long b, long long c) { long long tmp = 1; while (b) { if (b & 1) tmp = (tmp*a) % c; a = (a*a) % c; b >>= 1; } return tmp; } long long fac[1000005]; void get_fac(long long p) { fac[0] = 1; for (int i = 1;i <= p;i++) fac[i] = (fac[i - 1] * i) % p; } long long Lucas(long long n, long long m, long long p) { long long tmp = 1; while (n && m) { long long a = n%p, b = m%p; if (a < b) return 0; tmp = (tmp * fac[a] * pow(fac[b] * fac[a - b] % p, p - 2, p)) % p; n /= p; m /= p; } return tmp; } int n, m; int main() { get_fac(MOD); int T; scanf("%d", &T); for (int t = 1;t <= T;t++) { scanf("%d %d", &n, &m); int ans = Lucas(n, m, MOD); printf("Case %d: %d\n", t, ans); } return 0; }
相关文章推荐
- Android使用Google推荐的联网框架Volley,让连接网络更加简单
- js中的return ;return false;return true;的理解
- ASP.Net中命名空间Namespace浅析和使用例子
- JavaWeb相关知识点
- GemFire 8.2 在CentOS的安装步骤
- c#获取远程图片的方法
- 每天进步一点点——Linux中的线程局部存储(二)
- GIS+=地理信息+容器技术(5)——Docker的网络设置和存储挂载
- Caffe-Caffe Models
- 列举几种进程的同步机制
- PHPStorm 配置运行PHP项目
- I.MX6 Linux kernel LVDS backlight enable
- getElementsByName和getElementById的区别
- 利用d3.js绘制雷达图
- android,两个活动页面之间的跳转
- hdu1412 {A} + {B}(set水)
- 如何实现多线程的同步
- Deep learning:五十一(CNN的反向求导及练习)
- Deep learning:五十(Deconvolution Network简单理解)
- 羊皮书APP(Android版)开发系列(九)通过Wifi调试程序