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

其中 n! = 1 × 2 × · · · × n 。 
小葱想知道如果给定 n, m 和 k ,对于所有的 0 ≤ i ≤ n, 0 ≤ j ≤ min(i, m) 有多少对 (i, j) 满足 Cji 是 k 的倍数。

输入格式
第一行有两个整数 t, k ,其中 t 代表该测试点总共有多少组测试数据,k 的意义见问题描述。
接下来 t 行每行两个整数 n, m ,其中 n, m 的意义见问题描述。

输出格式
共 t 行,每行一个整数代表所有的 0 ≤ i ≤ n, 0 ≤ j ≤ min(i, m) 有多少对 (i, j) 满足 Cji 是 k 的倍数。

数据范围
n,m≤2000,2≤k≤21,t≤10^4
输入样例:
1 2
3 3

输出样例:
1

代码如下:

#include <iostream>
using namespace std;
const int N = 2010;
int c[N][N],s[N][N];int main()
{int cnt = 0,k = 0;cin>>cnt>>k;for (int i = 0;i<N;i++)for (int j = 0;j<=i;j++){if (!j) c[i][j] = 1%k;else c[i][j] = (c[i-1][j]+c[i-1][j-1])%k;if (!c[i][j]) s[i][j] = 1;}for (int i = 0;i<N;i++)for (int j = 0;j<N;j++){if(i) s[i][j] +=s[i-1][j];if (j) s[i][j] +=s[i][j-1];if (i&&j) s[i][j] -=s[i-1][j-1];}while(cnt--){int n,m;cin>>n>>m;cout<<s[n][m]<<endl;}return 0;
}

AcWing 523. 组合数问题相关推荐

  1. AcWing蓝桥杯AB组辅导课10、疑难杂题

    文章目录 前言 例题1:AcWing 1242. 修改数组(并查集) 分析 题解:单链表式并查集 例题2:AcWing 1234. 倍数问题(背包问题+贪心) 分析 题解1:01背包问题,三维解法(贪 ...

  2. AcWing 870. 约数个数(唯一分解+组合数)

    题目链接 https://www.acwing.com/problem/content/872/ 思路 我们将每一个数进行一个唯一分解后,对于每一个质因子我们统计一下数量,假设我们已经记录到了每一个质 ...

  3. AcWing 1309. 车的放置 (加法原理、乘法原理、组合数排列数的求法、乘法逆元)

    1309. 车的放置 分步做:先放上面的矩形,后考虑下面的矩形. 分类做:依次求出,上面放置 0 . 1 . 2 . - - . k 0.1.2.--.k 0.1.2.--.k个车的,而下面放置 k ...

  4. 《算法竞赛进阶指南》打卡-基本算法-AcWing 97. 约数之和:递归、快速幂

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 快速幂参考笔者的这篇博文: 算法刷题-数论-组合数.快速幂.逆元.递推求组合数.逆元求组合数 约数之和参考笔者的这篇博文: 算法刷题 ...

  5. 《算法竞赛进阶指南》打卡-基本算法-AcWing 95. 费解的开关:位运算、枚举、递推

    文章目录 题目解答 题目来源 题目解答 分析: 枚举第一行,指的是第一行哪些位置要切换状态!!!.第一行总共有5个数,组合数是32,即第一行哪些位置要切换总共有32种情况.这就是我们的枚举空间.比如, ...

  6. CSP认证 201312-4有趣的数[C++题解]:组合数、数学

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 题目要求:n位数,只能放0,1,2,3:0必须在1前面,2必须在3前面:0不能放在首位. 由于0和1有限制关系,2和3有限制关系,所 ...

  7. Acwing 1082. 数字游戏

    Acwing 1082. 数字游戏 题意: 现在大家决定玩一个游戏,指定一个整数闭区间 [a,b],问这个区间内有多少个不降数. 题解: 利用数位dp的套路来做 我们还是利用前缀和来做 我们先求1~n ...

  8. 洛谷、牛客网、AcWing 刷题(python版)

    牛客网python专项练习整理(一) https://blog.csdn.net/weixin_41913008/article/details/87203468 牛客网剑指offer--python ...

  9. AcWing基础算法课Level-2 第四讲 数学知识

    AcWing基础算法课Level-2 第四讲 数学知识 您将学会以下数学名词 质数,试除法,埃式筛法,线性筛,辗转相除,算术基本定理,质因数分解,欧拉函数,快速幂,费马小定理,逆元,拓展欧几里得,一次 ...

最新文章

  1. Binder相关面试总结(五):为什么Activity间传递对象需要序列化
  2. Python之sort()函数详解
  3. 使用Pandas进行变量衍生
  4. 深入浅出,Spring 框架和 Spring Boot 的故事
  5. Struts2中<s:iterator>基本用法及示例
  6. oracle迁移至gaussdb,GaussDB for DWS 数据融合系列第九期:Oracle数据迁移到GaussDB(DWS)...
  7. 【机器学习算法应用和学习_1】1.1 机器学习框架
  8. 30款硬盘有问题 细看希捷固件门事件.
  9. Frequency domain enhancement
  10. java中怎么保留小数_java怎么保留小数
  11. SQL Server数据库学习总结及T-SQL语法使用实战
  12. java 数组声明并初始化_Java数组的声明与初始化
  13. Maplab系列15:Inverted File
  14. html导航页面转换,纯CSS实现导航栏Tab切换效果
  15. 一文看懂网络安全五年之巨变
  16. 7-1 电话聊天狂人 (25分) PTA 数据结构
  17. 交换机链路聚合在网络中的作用
  18. 强大的矩阵奇异值分解(SVD)及其应用
  19. 对于雷诺数,你了解多少?
  20. 软件测试中常见的几种模型

热门文章

  1. Andorid之打包出现Proguard returned with erro code 1.See console解决办法
  2. C语言之函数指针和函数的首地址
  3. linux之tr命令使用和总结
  4. php+对象+toarray_PHP 对象、数组间的转换
  5. 听说这是和女朋友住一起后的现象之一
  6. 你根本想象不到,学霸到底经历过什么
  7. 有趣的灵魂,从高质量的阅读开始
  8. 不只是舒适,简直是享受,Google公司用的腰靠,到底有什么秘密?
  9. 数学课本上的几大变态
  10. 程序员找不到对象是因为还没遇到一个有远见的丈母娘