Light OJ 1102
题意: 给你一个数 N , 求分成 K 个数 (可以为 0 ) 的种数;
思路: 类似 在K个抽屉放入 N 个苹果, 不为0, 就是 在 n-1 个空隙中选 m-1个;
为 0, 就可以先在 K 个抽屉一个苹果, 之后类似了;
故答案就是 C(N+K-1, K-1);
数据大, 还控制内存。。。 按位乘 + 逆元
#include<bits/stdc++.h>
using namespace std;
typedef int LL;
const int maxn = 2000000 + 131;
const LL MOD = 1000000007; LL Mul(LL a, LL b, LL m)
{
a = (a % m + m) % m;
b = (b % m + m) % m;
LL ret = 0;
while(b)
{
if(b & 1) ret = (ret + a) % m;
b >>= 1;
a <<= 1;
a %= m;
}
return ret;
} LL Pow_Mod(LL a, LL n, LL m)
{
LL ret = 1;
while(n)
{
if(n & 1) ret = Mul(ret, a, m);
n >>= 1;
a = Mul(a, a, m);
}
return ret;
} LL Num[maxn], Inv[maxn];
void Init()
{
Num[0] = 1;
for(LL i = 1; i < maxn; ++i) Num[i] = Mul(Num[i-1], i, MOD);
Inv[maxn-1] = Pow_Mod(Num[maxn-1], MOD-2, MOD);
for(LL i = maxn-2; i >= 0; --i) Inv[i] = Mul(Inv[i+1], (i+1), MOD);
} LL C(LL m, LL n, LL mod)
{
if(n == 0 || n == m) return 1;
LL ret = 1;
LL s = m - n;
ret = Mul(Num[m], Inv[s], mod);
ret = Mul(ret, Inv[n], mod);
return ret;
} int main()
{
Init();
int t;
LL n, k;
scanf("%d",&t);
for(int kase = 1; kase <= t; ++kase)
{
scanf("%d %d",&n, &k);
printf("Case %d: %d\n",kase, C(n+k-1, k-1, MOD));
}
}
Light OJ 1102的更多相关文章
- (light oj 1102) Problem Makes Problem (组合数 + 乘法逆元)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1102 As I am fond of making easier problems, ...
- light oj 1102 - Problem Makes Problem组合数学(隔板法)
1102 - Problem Makes Problem As I am fond of making easier problems, I discovered a problem. Actuall ...
- Light OJ 1114 Easily Readable 字典树
题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...
- Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...
- Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖
标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...
- Light OJ 1316 A Wedding Party 最短路+状态压缩DP
题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...
- light oj 1007 Mathematically Hard (欧拉函数)
题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...
- Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖
题目来源:Light OJ 1406 Assassin`s Creed 题意:有向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问题 ...
- Light OJ 1288 Subsets Forming Perfect Squares 高斯消元求矩阵的秩
题目来源:Light OJ 1288 Subsets Forming Perfect Squares 题意:给你n个数 选出一些数 他们的乘积是全然平方数 求有多少种方案 思路:每一个数分解因子 每隔 ...
随机推荐
- npm与nrm
npm npm是Node.js 平台的默认包(模块依赖)管理工具 Node Package Manager nrm 一个npm的源管理器(管理工具) 允许快速的在 npm 源间切换 两者关系 npm是 ...
- 【Django】git建仓上传时遇到的小问题
根据教程 http://tutorial.djangogirls.org/zh/deploy/,在github上建仓上传项目文件. 执行到 git push -u origin master 时,输入 ...
- Filter 起航 编程式配置 压缩响应 日志过滤器
[编程式配置]可以用web.xml配置替换 @WebListenerpublic class FilterListenerConfigurator implements ServletContextL ...
- 【noip 2015】提高组
先扔一份写的超级详细的题解. -Day1- -Day2- (感觉自己并没有什么写题解的必要啊……做点补充好了,顺便扔代码 D1T1.神奇的幻方 题目链接 #include<cstdio ...
- 很实用的php的缓存类文件示例
http://www.php.cn/php-weizijiaocheng-376603.html <?php /* * 缓存类 cache */ class cache { //缓存目录 var ...
- mac 下node,yarn安装及版本切换
node安装 https://nodejs.org/en/download/ 到官网下载指定版本 安装node的管理工具 sudo npm install -g n //安装n sudo n 8.9. ...
- steps/train_mono.sh
<<单音素HMM的训练流程图.vsdx>> 定义拓扑结构.参数初始化 $ gmm-init-mono --shared-phones=$lang/phones/sets.int ...
- python中重要的模块--asyncio 转载
转载自: https://www.cnblogs.com/zhaof/p/8490045.html 一直对asyncio这个库比较感兴趣,毕竟这是官网也非常推荐的一个实现高并发的一个模块,python ...
- HeapByteBuffer与DirectByteBuffer
HeapByteBuffer,顾名思义,是写在jvm堆上面的一个buffer,底层的本质是一个数组,用类封装维护了很多的索引(limit/position/capacity等) DirectByteB ...
- Tip:HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. Tip ...