题意: 给你一个数 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的更多相关文章

  1. (light oj 1102) Problem Makes Problem (组合数 + 乘法逆元)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1102 As I am fond of making easier problems, ...

  2. light oj 1102 - Problem Makes Problem组合数学(隔板法)

    1102 - Problem Makes Problem As I am fond of making easier problems, I discovered a problem. Actuall ...

  3. Light OJ 1114 Easily Readable 字典树

    题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...

  4. Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖

    题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...

  5. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...

  6. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  7. light oj 1007 Mathematically Hard (欧拉函数)

    题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...

  8. Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖

    题目来源:Light OJ 1406 Assassin`s Creed 题意:有向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问题 ...

  9. Light OJ 1288 Subsets Forming Perfect Squares 高斯消元求矩阵的秩

    题目来源:Light OJ 1288 Subsets Forming Perfect Squares 题意:给你n个数 选出一些数 他们的乘积是全然平方数 求有多少种方案 思路:每一个数分解因子 每隔 ...

随机推荐

  1. http.lua里的装饰器

    摘自:http.lua local co_yield = coroutine.yield local co_create = coroutine.create local co_status = co ...

  2. Elasticsearch入门实践

    官网:https://www.elastic.co/ 下载:https://www.elastic.co/downloads/elasticsearch 文档:https://www.elastic. ...

  3. IDApython教程(五)

    我们继续IDAPython让生活更美好序列,这一部分我们解决逆向工程师日常遇到的问题:提取执行的内嵌代码. 恶意软件会用各种方式存储内嵌可执行代码,有些恶意软件将内嵌代码加到文件附加段,包括PE资源区 ...

  4. Spring 快速开始 启动Spring

    [启动Spring必须配置] [web.xml部署描述符方式] 1.配置Servlet级别上下文 <servlet> <servlet-name>springDispatche ...

  5. tensorflow 学习1——tensorflow 做线性回归

    . 首先 Numpy: Numpy是Python的科学计算库,提供矩阵运算. 想想list已经提供了矩阵的形式,为啥要用Numpy,因为numpy提供了更多的函数. 使用numpy,首先要导入nump ...

  6. .net 使用oracle 的存储过程有返回值也有数据集(游标)

    public void GetData(string username, string userip, string userkey, string userareaid, string ypid, ...

  7. pyqt5-QWidget坐标系统和大小

    获取坐标和尺寸: 坐标的获取视频教程:https://v.qq.com/x/page/t085892mzh9.html  x()    y()   返回控件的坐标 相对于父控件的坐标(窗口框架左上角) ...

  8. Ubuntu18.04下Python Web环境搭建

    Python3的安装与卸载 pip, pip3的安装 Django2.x的安装 mysql的安装及命令行工具mycli的安装 virtualenv及virtualenvwrapper的安装 IPyth ...

  9. vue-CLI踩坑记

    vue init webpack vue-demo 使用 windows 7 DOS命令行和gitbash都有选择和实际选择结果不一致的问题, DOS命令行只在 Vue build有问题, gitba ...

  10. scss转css的过程中 转化问题

    如果  在转化过程中语法没有问题的话    测试一下是否是文件的bom头的问题