noip 2016 day2 t1组合数问题
题目描述
组合数表示的是从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 2
3 3
1
2 5
4 5
6 7
0
7
说明
【样例1说明】
在所有可能的情况中,只有是2的倍数。
【子任务】

C
组合数的递推式
f[i][j]=f[i-1][j-1]+f[i-1][j]
n个物品中取m个物品,若不取这个物品,则从n-1,m推过来,若取这个物品则从n-1,m-1推过来。
详见数学课本选修2—3
然后做一个预处理
ans[i][j]=ans[i-1][j]+h[i];
表示n为i,m为j是的总方案数
#include<cstdio> const int N=; long long f[N][N],h[N];
long long ans[N][N],n,m,k,t; void chushi()
{
f[][]=;
for(int i=;i<=;i++)
{
f[i][]=;
for(int j=;j<=i;j++)//(a+b)%c=((a%c)+(b%c))%c;
{
f[i][j]=(f[i-][j-]%k+f[i-][j]%k)%k;
if(f[i][j]==)
{
h[i]++;
}
ans[i][j]=ans[i-][j]+h[i];
if(j==i) ans[i][j]=h[i]+ans[i-][j-];
}
}
} inline int min(int x,int y)
{
if(x<y)return x;
return y;
} int main()
{
scanf("%d%d",&t,&k);
chushi();
for(int i=;i<=t;i++)
{
scanf("%d%d",&n,&m);
m=min(n,m);
printf("%d\n",ans[n][m]);
}
return ;
}
noip 2016 day2 t1组合数问题的更多相关文章
- 【NOIP2016提高组】 Day2 T1 组合数问题
题目传送门:https://www.luogu.org/problemnew/show/P2822 ↓题目大意↓ 数据的极限范围:n,m≤2000,k≤21,数据组数≤ ...
- 3730 无线网络发射选址[NOIP 0214 day2 T1]
3730 无线网络发射选址 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题解 查看运行结果 题目描述 Description 随着智能手机的日 ...
- NOIP2016 DAY2 T1 组合数问题
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- Noip2016 提高组 Day2 T1 组合数问题
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- NOIP 2014 Day2 T1 无线网络发射器
#include<iostream> #include<cmath> #include<cstdlib> #include<cstdio> #inclu ...
- noip 2016 day1 T1玩具谜题
题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...
- Codevs 3578 无线网络发射器选址== NOIP 2014 Day2 T1
3578 无线网络发射器选址 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 随着智能手机的日益普及,人们对无线网的需求日益增大. ...
- noip 2018 Day2 T1 旅行
暴力删边,暴力枚举 #include <bits/stdc++.h> using namespace std; #define MAXM 5010 inline int read() { ...
- noip 2018 day2 T1 旅行 基环树 tarjan
Code: #include<cstdio> #include<cstring> #include<string> #include<stack> #i ...
随机推荐
- 【51NOD-0】1046 A^B Mod C
[算法]快速幂运算 [题解]快速幂的原理是把幂用二进制表示,从最低位a,次低位a2,次次低位(a2)2. #include<cstdio> long long quick_pow(long ...
- FileReader 与canvas结合使用显示图片
话不多少,直接上代码 function fileChange() { var file = this.files[0]; var imageType = /^image\//; //是否是图片 if ...
- 如何升级nodejs版本 安装n模块报错 npm ERR! notsup Unsupported platform
如何升级nodejs版本 首先安装n模块, 输入npm install -g n n模块专门用来管理nodejs的版本. 如果出现npm ERR! notsup Unsupported platfor ...
- 关于 zfs 命令相关介绍
三种设备:filesystem volume snapshot 1.zfs listroot@UA4300D-spa:~/hanhuakai/pro_07/git_0708# zfs listNA ...
- apache log 按日期记录 格式 <GOOD>-- (转)
在apache的配置文件中找到ErrorLog logs/error_logCustomLog logs/access_log common Linux系统配置方法: 将其改为ErrorLog “| ...
- Caffe学习笔记3
Caffe学习笔记3 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和h ...
- .gitignore 文件添加或更新后规则无效的解决方案
项目已经提交之后,突然想忽略某个文件或目录 A,于是在 .gitignore 里添加了忽略规则.但是提交(commit)之后,发现一旦修改了 A,git 同样会检测到 A 的变化(changes) , ...
- Yii 1.1.17 六、开启路由与使用缓存
一.开启路由 1.在配置文件main.php的components中 定义如下: // 定义路由 'urlManager'=>array( // URL模式为PATHINFO 'urlForma ...
- Linux 删除带有特殊字符的文件
Linux 删除带有特殊字符的文件 http://www.cnblogs.com/tester-hehehe/p/5715128.html
- 4.FireDAC组件快照 二
TFDUpdateSQL 生成添加,删除,修改SQL语句 TFDMetaInfoQuery 查询数据源信息 TFDEventAlerter 负责处理数据库事件通知 使用TFDEventAlerter类 ...