题目描述

组合数表示的是从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

说明

【样例1说明】

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

【子任务】

可以发现k是先给出的且不会变,想到先预处理出所有的答案

我们知道C(i,j)=C(i-1,j)+C(i-1,j-1),先用O(n^2)处理所有C[i][j]并取模

取b[i][j]表示c[i][j]是否能整除k,判断取模后是否为0即可

设f[i][[j]为对应的n=i,m=j的答案,分析f[i][j]的递推关系

其实打个表就容易找到规律,这里f[i][j]=C[i-1][j]+C[i][j-1]+C[i-1][j-1]+b[i][j]

代码如下,

#include <cstdio>
#include <cstring>
#define N 2020 int T, k, n, m;
int f[N][N];
bool b[N][N]; inline int read()
{
int x = 0, f = 1; char ch = getchar();
while (ch < '0' || ch > '9') {if (ch == '-')f = -1; ch = getchar();}
while (ch >= '0' && ch <= '9') {x = x * 10 + ch - '0'; ch = getchar();}
return x * f;
} int main()
{
T = read(), k = read();
for (int i = 1; i <= N; ++i)
{
f[i][1] = i % k;
f[i][i] = 1;
}
for (int i = 3; i <= 2000; ++i)
for (int j = 2; j <= i - 1; ++j)
f[i][j] = (f[i - 1][j] + f[i - 1][j - 1]) % k;
for (int i = 1; i <= 2000; ++i)
for (int j = 1; j <= i; ++j)
if (!f[i][j]) b[i][j] = 1;
memset(f, 0, sizeof(f));
for (int i = 1; i <= 2000; ++i)
for (int j = 1; j <= 2000; ++j)
f[i][j] = f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1] + b[i][j];
while (T--)
{
n = read(), m = read();
printf("%d\n", f[n][m]);
}
return 0;
}

[Noip2016]组合数(数论)的更多相关文章

  1. Noip2016组合数(数论)

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

  2. Luogu 2822[NOIP2016] 组合数问题 - 数论

    题解 乱搞就能过了. 首先我们考虑如何快速判断C(i, j ) | k 是否成立. 由于$k$非常小, 所以可以对$k$分解质因数, 接着预处理出前N个数的阶乘的因数中 $p_i$ 的个数, 然后就可 ...

  3. Bzoj 1856: [Scoi2010]字符串 卡特兰数,乘法逆元,组合数,数论

    1856: [Scoi2010]字符串 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1194  Solved: 651[Submit][Status][ ...

  4. noip2016组合数问题

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

  5. NOIP2016 组合数问题

    https://www.luogu.org/problem/show?pid=2822 题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以 ...

  6. 2559. [NOIP2016]组合数问题

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

  7. [noip2016]组合数问题<dp+杨辉三角>

    题目链接:https://vijos.org/p/2006 当时在考场上只想到了暴力的做法,现在自己看了以后还是没思路,最后看大佬说的杨辉三角才懂这题... 我自己总结了一下,我不能反应出杨辉三角的递 ...

  8. NOIP 2016 组合数问题

    洛谷 P2822 组合数问题 洛谷传送门 JDOJ 3139: [NOIP2016]组合数问题 D2 T1 JDOJ传送门 Description 组合数Cnm表示的是从n个物品中选出m个物品的方案数 ...

  9. noip 2016提高组D2T1 problem

    我们可以先预处理一下组合数模K的值,然后我们可以发现对于答案ji[n][m],可以发现递推式ji[i][j]=ji[i-1][j]+ji[i][j-1]-ji[i-1][j-1]并对于Cij是否%k等 ...

随机推荐

  1. 使用md5的密码加密,处理用户的密码

    需求 1.新增用户保存:使用md5的密码加密,如果用户没有填写密码,设置初始密码“123”: 2.修改用户保存:使用md5的加密加密 *如果修改了密码,需要进行md5的密码加密: *如果没有修改密码, ...

  2. T-SQL在线格式化工具

    http://www.dpriver.com/pp/sqlformat.htm?ref=g_wangz

  3. Git的使用(详细)

    一下内容引自网络 原帖:http://blog.jobbole.com/78960/ 原文出处: 涂根华的博客

  4. 数据结构与算法分析java——线性表2(ArrarList )

    ArrayList ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, C ...

  5. java 内存举例

    1. java内存的主要划分 2.  OOTest02.java 的内存划分 public class OOTest02{ public static void main(String[] args) ...

  6. POJ-1159 Palindrome---变成回文串的最小代价

    题目链接: https://cn.vjudge.net/problem/POJ-1159 题目大意: 题意很明确,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符 ...

  7. Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)

    https://zhuanlan.zhihu.com/p/23006190?refer=xiaoleimlnote http://blog.csdn.net/bea_tree/article/deta ...

  8. C#自动更新本地程序

    关于系统的自动更新.近日有一情况是需要将java端后台最新版本的系统文件覆盖本地客户端,简称自动更新了. 本地会获取当前系统的版本号去请求后台java的接口数据.返回给我的是后台压缩包转的base64 ...

  9. 【Java-Regex】该用正则表达式却偷懒使用 indexOf 引起的BUG

    留着等下写. 背景 Excel列内容,无法获取全部格式,但我们有最终的准确格式. 用准确格式去严格匹配,而不是盲人摸象. 不符合就置为空,符合就.

  10. C#在派生类中调用基类成员

    一.在派生类中调用基类成员 在C#的派生类中,我们可以使用base关键字调用基类中的公有或者受保护成员.这些成员只能是构造函数.实例方法或者实例属性. base关键字调用基类成员的语法格式如下: ba ...