题目描述

组合数表示的是从n个物品中选出m个物品的方案数。举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法。根据组合数的定 义,我们可以给出计算组合数的一般公式:

C(m,n)=n!/m!(n−m)!

其中n! = 1 × 2 × · · · × n

小葱想知道如果给定n,m和k,对于所有的0 <= i <= n,0 <= j <= min(i,m)有多少对 (i,j)满足是k的倍数。

输入输出格式

输入格式:

第一行有两个整数t,k,其中t代表该测试点总共有多少组测试数据,k的意义见 【问题描述】。

接下来t行每行两个整数n,m,其中n,m的意义见【问题描述】。

输出格式:

t行,每行一个整数代表答案。

输入输出样例

输入样例#1:

1 2

3 3

输出样例#1:

1

输入样例#2:

2 5

4 5

6 7

输出样例#2:

0

7

说明

【样例1说明】

在所有可能的情况中,只有是2的倍数。

思路: 这题我是先预处理所有情况,然后O(1)查询,其实只要知道C[i][j] = C[i-1][j] + C[i-1][j-1],这个公式就行了,我们对每一个C[i][j]取模,然后统计,统计[n,m]范围C[i][j] = 0的个数就行了。  在统计的时候用到了差分,即s[i][j] = s[i-1][j] + s[i][j-1] -s[i-1][j-1] + (!C[i][j]); (这个仔细想想是很简单的)。

下面是代码,感觉是挺简洁的,如果有问题,可以在下面给我留言。

#include<cstdio>
#define N 2010 int k,C[N][N],s[N][N]; void solve(){
C[][] = C[][] = C[][] = ;
for(int i = ; i <= ;i++){ //计算C[i][j] ,并取模
C[i][] = %k;
for(int j = ; j <= i; j++)
C[i][j] = (C[i-][j]+C[i-][j-])%k;
} for(int i = ; i <= ;i++){ //统计
s[i][] = s[i-][] + !C[i][];
s[i][] = s[i][]+s[i-][]-s[i-][] + !C[i][];
for(int j = ; j <= i;j++){
if(i == j)s[i][j] = s[i][j-] + !C[i][j];
else if(i < j)s[i][j] = s[i][j-];
else s[i][j] = s[i-][j] + s[i][j-]-s[i-][j-] + !C[i][j];
}
} } int main(){
int t;
scanf("%d%d",&t,&k);
solve();
while(t--){
int n,m;
scanf("%d%d",&n,&m);
printf("%d\n",s[n][m]);        //输出
}
return ;
}

NOIP2016 DAY2 T1 组合数问题的更多相关文章

  1. 【NOIP2016提高组】 Day2 T1 组合数问题

    题目传送门:https://www.luogu.org/problemnew/show/P2822                 ↓题目大意↓ 数据的极限范围:n,m≤2000,k≤21,数据组数≤ ...

  2. Noip2016 提高组 Day2 T1 组合数问题

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  3. noip 2016 day2 t1组合数问题

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  4. Noip2016提高组 组合数问题problem

    Day2 T1 题目大意 告诉你组合数公式,其中n!=1*2*3*4*5*...*n:意思是从n个物体取出m个物体的方案数 现给定n.m.k,问在所有i(1<=i<=n),所有j(1< ...

  5. Noip2011 提高组 Day1 T1 铺地毯 + Day2 T1 计算系数

    Day1 T1 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小 ...

  6. Noip2014 提高组 Day1 T1 生活大爆炸版石头剪刀布 + Day2 T1 无线网络发射器选址

    Day1 T1 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负.在<生活大爆炸>第二季第8 集中出现了一种石头剪刀布的升级版游戏. 升 ...

  7. 济南学习 Day2 T1 am

    T1 题意:从1− n中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数 最大可能是多少. 解析: 1.  质因数分解 2.  1->n用质因数指数的相加的形式将1*n累乘起来 3.   ...

  8. [NOIp2016提高组]组合数问题

    题目大意: 给定n,m和k,对于所有的0<=i<=n,0<=j<=min(i,m)有多少对(i,j)满足C(j,i)是k的倍数. 思路: 先预处理出组合数,再预处理一下能整除个 ...

  9. Luogu P2822 [NOIp2016提高组]组合数问题 | 数学、二维前缀和

    题目链接 思路:组合数就是杨辉三角,那么我们只要构造一个杨辉三角就行了.记得要取模,不然会爆.然后,再用二维前缀和统计各种情况下组合数是k的倍数的方案数.询问时直接O(1)输出即可. #include ...

随机推荐

  1. 互联网服务器的实现过程需要考虑哪些安全问题 & 加解密及哈希知识点

    http://www.cnblogs.com/charlesblc/p/6341265.html 其中的一篇. 参考 https://zhuanlan.zhihu.com/p/20336461?ref ...

  2. HDU 3691

    一个源点,一个汇点,明显是网络流的问题,但据说用网络流来求最小割,会超时..囧,那出题的人是怎么想的... 用SW的算法来求最小割. #include <iostream> #includ ...

  3. Java&amp;&amp;(面试题)初始化顺序总结

    1  无继承情况下的Java初始化顺序: class Sample {       Sample(String s)       {             System.out.println(s) ...

  4. LeetCode96_Unique Binary Search Trees(求1到n这些节点能够组成多少种不同的二叉查找树) Java题解

    题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...

  5. SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理——深入的话需要去折腾Azure Active Directory

    SRV记录 SRV记录 什么情况下会用到SRV记录? [SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理] SRV记录的添加方式 A.主机记录处格式为:服务的名字.协议的类型 例如 ...

  6. angular2 使用swiper

    欢迎加入前端交流群交流知识&&获取视频资料:749539640 第一步: npm install swiper --save 第二步:下载swiper ts支持(http://micr ...

  7. jquery事件重复绑定的几种解决方法

    防止事件重复绑定共有4种方法: bind().unbind()方法 live().die()方法 off().on()方法 one()方法 一.bind().unbind()方法 bind();绑定事 ...

  8. 解决PopupWindow的阴影覆盖问题

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/108 PopupWindow阴影覆盖问题 最近这段时间需求 ...

  9. html页面中苹果手机遇到数字换行、样式变形

    在做项目中遇到过几回苹果手机读取html页面时,如果出现一串数字,html页面会折行.变形,最后发现是因为苹果手机的打电话功能,如果html上有数字的话,苹果手机会以为是电话号码,就会改变其样式只需要 ...

  10. C - Elephant(贪心)

    Problem description An elephant decided to visit his friend. It turned out that the elephant's house ...