sumcomb (组合数)
来源:互联网 发布:网站编程语言培训机构 编辑:程序博客网 时间:2024/06/07 17:45
10.19
找规律题目,在图上推推就发现,一个是起点下面的数,一个是起点右下角的数。
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#define LL long longusing namespace std;const LL mod = 1e9 + 7;LL mub[1000010];LL x, y;void init(){ mub[0] = 1;// for(int i=1; i<=1000010; i++){ mub[i] = mub[i-1] * i % mod; }}LL exgcd(LL a, LL b, LL &x, LL &y){ if(a == 0 && b == 0) return -1; if(b == 0){ x = 1; y = 0; return a; } LL d = exgcd(b, a % b, y, x); y -= a / b * x; return d;}LL mod_reverse(LL a, LL n){ LL d = exgcd(a, n, x, y); if(d == 1) return ( x % n + n ) % n; else return -1;}LL solve(int a, int b){ if(a > b) return 0; LL nn = mod_reverse((mub[a] * mub[(b + mod - a) % mod]) % mod, mod); return mub[b] * nn % mod;}int main(){ freopen ("sumcomb.in", "r", stdin); freopen ("sumcomb.out", "w", stdout); int T; scanf("%d", &T); init(); while ( T-- ){ int opt, a, b; scanf("%d%d%d", &opt, &a, &b); if(a > b) { printf("0\n"); continue;} if(opt == 1) printf("%I64d\n", solve(b+1, a+1)); else printf("%I64d\n", solve(b, a+1)); }}
阅读全文
0 0
- sumcomb (组合数)
- 组合数(nyoj32)
- 组合数(dfs)
- 组合数(dfs)
- 组合数 (Lucas)
- 组合数(未完)
- uva1635(组合数)
- 组合数(dfs)
- poj 3252 (组合数)
- hdu 4655 (组合数)
- 求组合数(数学)
- acm-组合数(prev_permutation)
- Catalan数(组合数学)
- nyoj32组合数(DFS)
- (组合数学)Stirling 数
- 求组合数(模板)
- HEX(组合数+线性代数)
- 77 Combinations(组合数)
- 【动态规划】[luoguP1791]线段覆盖
- pay 解方程 (exgcd)
- IOI 1994 169:The Buses
- 前端开发CSS规范-分类方法
- Jacob的使用出错总结
- sumcomb (组合数)
- 归并排序算法的过程图解
- day 11 用户及组管理
- webrtc代码上传-linux平台
- 51nod 1551 集合交易 匈牙利算法+最大权闭合子图
- JSP/Servlet初识一
- css列表标志 样式
- 简单的 OpenCV 配置(VS通用)
- 洛谷 1803 凌乱的yyy 贪心 解题报告