Light OJ 1102 Problem Makes Problem 组合数
来源:互联网 发布:windows的发展过程 编辑:程序博客网 时间:2024/06/11 22:21
题目来源:Light OJ 1102 Problem Makes Problem
题意:一个整数n分解成k个数相加有多少种方案 数字可以重复
思路:m个苹果放n个盒子有多少方案 允许盒子有空 盒子空对应0 答案是C(n+m-1, n-1)
首先如果不允许有空 答案是C(m-1, n-1) 插空法m个苹果有m-1个空档 在这m-1个空档里选n-1个分成了n部分 每部分都不是空的
现在允许为空 那么给每个盒子增加一个苹果 相当于n+m个苹果分成n份 n+m-1个空档里选n-1个 C(n+m-1, n-1)
每部分都至少为1 为1的其实是空的 是我开始加上去的 为的是方便用插空法
#include <cstdio>#include <cstring>using namespace std;typedef long long LL;const LL mod = 1000000007;const int maxn = 2000010;//返回a^p mod n 快速幂LL a[maxn];LL pow_mod(LL a, LL p, LL n){LL ans = 1;while(p){if(p&1){ans *= a;ans %= n;}a *= a;a %= n;p >>= 1;}return ans;}LL C(LL n, LL m){LL x = a[n], y = a[n-m]*a[m]%mod;return x*pow_mod(y, mod-2, mod)%mod;}int main(){a[0] = 1;for(int i = 1; i <= 2000000; i++){a[i] = a[i-1]*i;a[i] %= mod;}int cas = 0; int T;scanf("%d", &T); while(T--){LL n, m;scanf("%lld %lld", &n, &m);printf("Case %d: %lld\n", ++cas, C(n+m-1, m-1));}return 0;}
0 0
- Light OJ 1102 Problem Makes Problem 组合数
- light oj 1102 Problem Makes Problem [组合数+逆元]
- lightoj 1102 - Problem Makes Problem(组合数+逆元)
- LightOJ 1102 Problem Makes Problem(组合数学)
- lightoj 1102 - Problem Makes Problem (组合+逆元)
- LightOJ - 1102 Problem Makes Problem
- Light oj 1070 - Algebraic Problem
- 【DP】 Light OJ 1004 Monkey Banana Problem
- Light oj 1261 - K-SAT Problem【模拟】
- light oj 1004 - Monkey Banana Problem
- Light oj 1004 - Monkey Banana Problem(DP)
- light oj 1261 - K-SAT Problem (模拟)
- Light oj 1179 - Josephus Problem 【思维】
- light oj 1005 Rooks(组合数)
- NOIP2016Day2T1组合数问题(problem)
- Noip2016day2 组合数问题problem
- Light OJ 1004 - Monkey Banana Problem dp题解
- LIGHT OJ 1179 - Josephus Problem【约瑟夫(模板)】
- java测试题-3(null+“abc”)
- 使用 jQuery UI 主题
- 电脑玩网络游戏退出非常缓慢怎么办
- 使用jrtplib(RTP)传输H.264视频文件(2)
- 关于INFA的Update Strategy 设置
- Light OJ 1102 Problem Makes Problem 组合数
- 五问LDA
- silabs 大话si4463两种数据传输模式
- TCP协议中的计时器
- Easy Net项目组QQ群
- 使用jrtplib传输H.264视频文件(3)
- mvc中实现删除数据库表中的所有数据
- 多工作线程获取工作队列简单实现
- Linux面试必问-查看目录结构“tree”命令