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

其中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
【数据范围】

【分析】
首先我们要知道一个关于组合数的递推公式:C(i,j)=C(i-1,j)+C(i-1,j-1),其实就是杨辉三角,只是初始化不一样。
如果要计算C(2000,2000),只能用高精度计算,但是这道题并不需要计算出每一个C(i,j)的值,只要知道C(i,j)对于k的余数即可。
于是我们可以设计算法:先计算出每一个C(i,j)对k取模的值,再用f(i,j)表示C(i,j)是否能整除k,是就为1,反之为0,最后用ans(i,j)表示f(1..i,1..j)的和,最后读入n,m就直接输出ans(n,m)即可。
程序中为了减少内存,把ans数组消掉了。

const maxn=2000;
varf,flag:array[0..2001,0..2001]of longint;//其实i和j如果有一个为0,C(i,j)就不存在了,因为分母为零,不过C(0,0)好像是1i,j,t,k,n,m:longint;
beginread(t,k);for i:=1 to maxn do begin f[i,1]:=i mod k;f[i,i]:=1; end;for i:=3 to maxn dofor j:=2 to i-1 dof[i,j]:=(f[i-1,j]+f[i-1,j-1]) mod k;for i:=1 to maxn dofor j:=1 to i doif f[i,j]=0 then flag[i,j]:=1;fillchar(f,sizeof(f),0);for i:=1 to maxn dofor j:=1 to maxn dof[i,j]:=f[i-1,j]+f[i,j-1]-f[i-1,j-1]+flag[i,j];for i:=1 to t do beginread(n,m);writeln(f[n,m]);end;
end.

组合数问题(NOIP2016提高组Day2T1)相关推荐

  1. P1850 [NOIP2016 提高组] 换教室

    P1850 [NOIP2016 提高组] 换教室 题意: 有2n个课安排在n个时间段上,每个时间段上都有两个一样的课同时在不同地方上,起初牛牛被所有课都被安排在Ci上课,另一节课在Di上课.牛牛现在想 ...

  2. [NOIP2016 提高组] 愤怒的小鸟

    [NOIP2016 提高组] 愤怒的小鸟 题意: 有n只猪,给出猪的坐标(xi,yi),问最少用几个形如 y=ax^2+bx 的曲线可以保证所有猪在曲线上,满足a<0,a,b为实数 n<= ...

  3. 【NOIP2016提高组】天天爱跑步

    题目背景 NOIP2016 提高组 Day1 T2 题目描述 小 C 同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每 ...

  4. #185. [NOIP2016 提高组] 蚯蚓题解

    #185. [NOIP2016 提高组] 蚯蚓题解 题目描述 本题中,我们将用符号 ⌊c⌋\lfloor c \rfloor⌊c⌋ 表示对 ccc 向下取整,例如:⌊3.0⌋=⌊3.1⌋=⌊3.9⌋= ...

  5. NOIP2016 提高组 解题报告

    说明:由于我能力的限制,文章中的做法不一定是最优秀的算法,但官方数据全部测试通过,使用的全部知识全部是NOIP提高组的知识,请组织放心查看. 感谢 GoodQt 的指导与帮助 DAY1 T1 玩具谜题 ...

  6. 洛谷P1563 [NOIP2016 提高组] 玩具谜题 C语言 通俗易懂解法

    题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singersi ...

  7. JZOJ 4637 大鱼海棠【NOIP2016提高组A组7.16】

    大鱼海棠 (该名字来自于某部电影) 题目大意 给出一棵有n个节点,根节点为1的树. 现在,有两个人在玩游戏,他们绝顶聪明,我们暂且称他们为AA和BB,他们轮流对这棵树进行操作,AA先手,BB后手,每次 ...

  8. NOIP2016提高组复赛解题报告

    Day1 T1-玩具谜题 Day1 T2-天天爱跑步 Day1 T3-换教室 Day2 T1-组合数问题 Day2 T2-蚯蚓 Day2 T3-愤怒的小鸟 转载于:https://www.cnblog ...

  9. P2831 [NOIP2016 提高组] 愤怒的小鸟 状压dp

    某谷链接 题意:选最少的抛物线来覆盖所有点. 注意到a<0,所以我们可以枚举两个点来构成一条抛物线,让后记这两个点构成的抛物线为 cov[i][j]cov[i][j]cov[i][j],让后他存 ...

  10. [NOIP2016 提高组] 天天爱跑步(树上差分)

    如果没有时间的限制,这题就是对每个点iii,求经过iii的路径数,用树上差分解决即可: 枚举路径x→y{x\to y\{x→y{ a[x]+=1;a[y]+=1;a[x]+=1;a[y]+=1;a[x ...

最新文章

  1. 「懒人」LeCun想让计算机自己编程?网友:还差10个 GPT-3
  2. 函数指针与指针函数的区别
  3. Java两种核心机制
  4. python编程 从入门到实践怎么样-python编程从入门到实践这本书怎么样
  5. 结构指针的坑之(定义结构体指针时并没有分配存储空间,所以要用malloc()申请空间)
  6. hdu-4549 M斐波那契数列 nyoj - 1000
  7. AGC002E Candy Piles
  8. excel怎么把单元格内某个字标红,其他字不变
  9. 【系统架构设计师】2020-08-05
  10. Source Generator:C# 9 将迎来编译时元编程
  11. 富贵不压重发_为什么老人常说“贵人不顶重发”,“重发”是什么意思? ?...
  12. 美团集群调度系统HULK技术演进
  13. codeblocks调试问题--单步调试遇到breakpoint不停---不能单步调试--运行按钮是灰色但是没有dos窗口...
  14. Handler 消息传递机制
  15. 知识,因为美丽而传播
  16. C如何简单的读写文件?二进制文件如何读写?如何移动文件指针?
  17. 天牛须和贪心算法_基于天牛须搜索的粒子群优化算法求解投资组合问题
  18. 物联网的背景及其发展
  19. 浮点数打印其实是个复杂的过程
  20. 3D立体相册 html+css

热门文章

  1. WordPress个人博客Cosy3.1.3主题+积木部分插件
  2. EwonCOSY 141 MPI EC51410【路由器】
  3. 精密测量专题2--光栅基片预处理
  4. 如何用cmd打开管理员模式
  5. 关于Web 验证方法你知道几种
  6. psCS6图片文件无法直接拖入的解决方法
  7. 出场顺序很重要下一句_年少有为一夜刷爆朋友圈:人生的出场顺序真的很重要...
  8. 移除联想M5210阵列卡(3650M5)的缓存模块以开启JBOD模式
  9. JAVA算法:三角形周长(JAVA版本算法)
  10. JavaEE 微信境外支付