题解 【NOIP2016】组合数问题
【NOIP2016】组合数问题
Description
Input
第一行有两个整数t, k,其中t代表该测试点总共有多少组测试数据,k的意义见【问题描述】。
接下来t行每行两个整数n, m,其中n, m的意义见【问题描述】。
Output
t行,每行一个整数代表所有的0<=i<=n,0<=j<=min(i,m)中有多少对(i, j)满足C(j,i)是k的倍数。
Sample Input
输入1:
1 2
3 3
输入2:
2 5
4 5
6 7
Sample Output
输出1:
1
输出2:
0
7
Hint
样例1提示:
在所有可能的情况中,只有C(1,2)是2的倍数。
输出范围:
Source
NOIP2016 ,数学, 杨辉三角
解析
这题看上去确实很难做哈。
毕竟这数据范围。。
但实际上,我们完全可以利用杨辉三角预处理出组合数模k的值,
这样只要模k为0就是k的倍数了。
然后再O(2000*2000)记录下次数就能O(1)回答了。
上AC代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std; int t,k,m,n;
int f[][],a[][]; int main(){
scanf("%d%d",&t,&k);
for(int i=;i<=;i++){
f[i][]=%k;
}
for(int i=;i<=;i++){
for(int j=;j<=i;j++){
f[i][j]=(ll)(f[i-][j]+f[i-][j-])%k;
}
}/*计算杨辉三角模k的值*/
if(!f[][]) a[][]=;
for(int i=;i<=;i++){
a[i][]=a[i-][]+(f[i][]==);
for(int j=;j<i;j++){
a[i][j]=a[i-][j]+a[i][j-]-a[i-][j-]+(f[i][j]==);
//如果值为0就是k的倍数
}
a[i][i]=a[i][i-]+(f[i][i]==);
for(int j=i+;j<=;j++) a[i][j]=a[i][i];
}/*预处理计数*/
for(int i=;i<=t;i++){
scanf("%d%d",&n,&m);
printf("%d\n",a[n][m]);
//O(1)回答
}
return ;
}
题解 【NOIP2016】组合数问题的更多相关文章
- 2559. [NOIP2016]组合数问题
[题目描述] [输入格式] 从文件中读入数据. 第一行有两个整数t, k,其中t代表该测试点总共有多少组测试数据,k的意义见[问题描述]. 接下来t行每行两个整数n, m,其中n, m的意义见[问题描 ...
- [题解]noip2016普及组题解和心得
[前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...
- Noip2016组合数(数论)
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- noip2016组合数问题
题目描述 组合数 Cnm 表示的是从 n 个物品中选出 m 个物品的方案数.举个例子,从 (1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3) 这三种选择方法.根据组合数的 ...
- Luogu 2822[NOIP2016] 组合数问题 - 数论
题解 乱搞就能过了. 首先我们考虑如何快速判断C(i, j ) | k 是否成立. 由于$k$非常小, 所以可以对$k$分解质因数, 接着预处理出前N个数的阶乘的因数中 $p_i$ 的个数, 然后就可 ...
- NOIP2016 组合数问题
https://www.luogu.org/problem/show?pid=2822 题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以 ...
- [Noip2016]组合数(数论)
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- [题解](组合数/二位前缀和)luogu_P2822组合数问题
首先要知道C(n,m)=C(n-1,m)+C(n-1,m-1),这样显然是一个杨辉三角,这样大部分的问题就解决了, 那么判能否整除只需要杨辉三角对k取模即可, 而对于多组数据的k都是一样的,所以用前缀 ...
- [noip2016]组合数问题<dp+杨辉三角>
题目链接:https://vijos.org/p/2006 当时在考场上只想到了暴力的做法,现在自己看了以后还是没思路,最后看大佬说的杨辉三角才懂这题... 我自己总结了一下,我不能反应出杨辉三角的递 ...
- NOIP 2016 组合数问题
洛谷 P2822 组合数问题 洛谷传送门 JDOJ 3139: [NOIP2016]组合数问题 D2 T1 JDOJ传送门 Description 组合数Cnm表示的是从n个物品中选出m个物品的方案数 ...
随机推荐
- C# Excel 中设置文字对齐方式、方向和换行
在Excel表格中输入文字时,我们常常需要调整文字对齐方式或者对文字进行换行.本文将介绍如何通过编程的方式设置文字对齐方式,改变文字方向以及对文字进行换行. //创建Workbook对象 Workbo ...
- PAT B1048 数字加密 (20)
AC代码 #include <cstdio> #include <cstring> #include <algorithm> #include <iostre ...
- 【动态规划】subsequence 1
题目链接:https://ac.nowcoder.com/acm/contest/885/G 题意: 两个串,s t,求s的所有子串中大于 t 的数目 题解: dp[i][j] 表示 s的前i个, ...
- wpf GeometryDrawing 绘制文字
<GeometryDrawing x:Key="GeometryDrawingText"> <GeometryDrawing.Geometry> <R ...
- Typora入门:全网最全教程
目录 简介 Markdown介绍 常用快捷键 块元素 换行符 标题级别 引用文字 无序列表 有序列表 任务列表 代码块 数学表达式 插入表格 脚注 分割线 目录(TOC) 跨度元素 链接 网址 图片 ...
- javascrip标签的href属性
1.标签的href属性用于指定超链接目标的URL.href属性的值可以是任何有效文档的相对或绝对URL,包括片段ID和javascript代码段. 2.javascript:这是一个虚假的协议.所谓的 ...
- mac下JDK的安装路径
苹果系统已经包含完整的J2SE,其中就有JDK和JVM(苹果叫VM).当然如果要升级JDK,那当然要自己下载安装了. 在MAC系统中,jdk的安装路径与windows不同,默认目录是:/System/ ...
- Oracle的FIXED
今天发现一个有意思的问题,我们知道,在Oracle数据库中正常执行 select sysdate from dual 都可以返回当前主机的系统时间.正常修改系统时间,对应的查询结果也会变成修改后的系统 ...
- Shiro学习笔记总结,附加" 身份认证 "源码案例(一)
Shiro学习笔记总结 内容介绍: 一.Shiro介绍 二.subject认证主体 三.身份认证流程 四.Realm & JDBC reaml介绍 五.Shiro.ini配置介绍 六.源码案例 ...
- JAVA语言程序设计课后习题----第三单元解析(仅供参考)
1 本题水题,记住要知道输入格式即可 import java.util.Scanner; public class test { public static void main(String[] ar ...