Day2 T1

题目大意

告诉你组合数公式,其中n!=1*2*3*4*5*...*n;意思是从n个物体取出m个物体的方案数

现给定n、m、k,问在所有i(1<=i<=n),所有j(1<=j<=min(i,m))的(i,j)满足Cji是k的倍数的个数。

输入样例:

2 5  (两个数,第一个数t表示该数据有t组询问,第二个为k,接下来t行分别为n,m)
4 5
6 7
输出样例:

0
7

数据范围:1<=n,m<=2000,1<=t<=10000,1<=k<=21

数论题,当时做竟然没发现这就是个杨辉三角,就是少了第一列全是1的,真是悲剧。

组合数的递推式就是Cmn=Cm-1n-1+Cmn-1

因为k一开始就固定了,所以预处理2000以内的个数,用前缀和优化优化就可以AC了,当然用二维前缀和似乎能优化到O(1),不麻烦每行一个前缀和到时候O(n)的得出答案也不会超时。

比完赛了也赶快转C++了23333

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int a[][],ji[][];
int n,m,ans,t,k;
int main(){
scanf("%d%d",&t,&k);
memset(a,,sizeof(a));
a[][]=%k;
if (a[][]==) ji[][]++;
for (int j=;j<=;j++)
for (int q=;q<=min(j,);q++){
if (q==) a[j][q]=(a[j-][q]+)%k;
else a[j][q]=(a[j-][q]+a[j-][q-])%k;
if (a[j][q]==) ji[j][q]=ji[j][q-]+; else ji[j][q]=ji[j][q-];
}
for (int i=;i<=t;i++){
scanf("%d%d",&n,&m);
ans=;
for (int j=;j<=n;j++)
ans+=ji[j][min(m,j)];
printf("%d\n",ans);
}
return ;
}

神奇的代码

Noip2016提高组 组合数问题problem的更多相关文章

  1. [NOIp2016提高组]组合数问题

    题目大意: 给定n,m和k,对于所有的0<=i<=n,0<=j<=min(i,m)有多少对(i,j)满足C(j,i)是k的倍数. 思路: 先预处理出组合数,再预处理一下能整除个 ...

  2. Luogu P2822 [NOIp2016提高组]组合数问题 | 数学、二维前缀和

    题目链接 思路:组合数就是杨辉三角,那么我们只要构造一个杨辉三角就行了.记得要取模,不然会爆.然后,再用二维前缀和统计各种情况下组合数是k的倍数的方案数.询问时直接O(1)输出即可. #include ...

  3. 【题解】NOIP2016提高组 复赛

    [题解]NOIP2016提高组 复赛 传送门: 玩具谜题 \(\text{[P1563]}\) 天天爱跑步 \(\text{[P1600]}\) 换教室 \(\text{[P1850]}\) 组合数问 ...

  4. 【题解】NOIP2016 提高组 简要题解

    [题解]NOIP2016 提高组 简要题解 玩具迷题(送分) 用异或实现 //@winlere #include<iostream> #include<cstdio> #inc ...

  5. NOIP2016提高组解题报告

    NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合

  6. [日记&做题记录]-Noip2016提高组复赛 倒数十天

    写这篇博客的时候有点激动 为了让自己不颓 还是写写日记 存存模板 Nov.8 2016 今天早上买了两个蛋挞 吃了一个 然后就做数论(前天晚上还是想放弃数论 但是昨天被数论虐了 woc noip模拟赛 ...

  7. 【NOIP2016提高组】 Day2 T1 组合数问题

    题目传送门:https://www.luogu.org/problemnew/show/P2822                 ↓题目大意↓ 数据的极限范围:n,m≤2000,k≤21,数据组数≤ ...

  8. Noip2016 提高组 Day2 T1 组合数问题

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

  9. 【NOIP2016提高组】换教室

    https://www.luogu.org/problem/show?pid=1850 题面很长,实质很水的一道期望DP题.题面自带劝退效果. 首先用Floyd算出任意两点的最短路径.然后设f(i,j ...

随机推荐

  1. 转:中间人攻击利用框架bettercap测试

    0x00前言 上篇提到内网渗透很有趣,这次就从一款新工具说起: bettercap 0x01简介 bettercap可用来实现各种中间人攻击,模块化,便携.易扩展 0x02特点 提到中间人攻击,最知名 ...

  2. 删除Json中的不需要的键值

    var json = {'A': 1,  ,'B': 2, 'ccc': 333} delete json['ccc'];

  3. java 使用递归获取指定文件路径目录,删除指定的文件后缀(可扩展,根据具体需要的删除的后缀进行配置)~~

    在工作开发过程中,每次用SVN提交代码全选择的时候,发现会产生很多不需要的文件后缀垃圾文件,感觉挺烦人的,一个一个删太麻烦了,如果产生多种后缀文件时,那删起来多费劲,是吧?想想,就写了一段程序通过递归 ...

  4. windows脚本配置ip地址

    背景:工作上经常涉及到要调试设备,每次都要手动配置静态ip地址,配置完之后还要重新改回来,有时候为了连续调试多台设备,来回手动更改ip,实在麻烦. 思考:想到windows有脚本,可以利用脚本文件达到 ...

  5. index()、e.target.value、on()与快捷处理的区别、

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. spring-security4.1.2的学习

    spring security教程 spring security是什么? Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了 ...

  7. Android7.0 新特性

    删除了三个隐式广播 1.监听网络变化的广播 CONNECTIVITY_ACTION,在Manifest.xml中注册的 不会受到,在前台运行的程序 registerReceiver()注册的广播可以接 ...

  8. Exynos 4412 Uboot源码解析

    原文地址:http://www.cnblogs.com/jacklu/p/6226330.html Exynos 4412 Uboot的汇编代码就不贴了,没有的可以私信我. 这是我当时阅读代码时的思维 ...

  9. PHP简单利用token防止表单重复提交

    <?php /* * PHP简单利用token防止表单重复提交 * 此处理方法纯粹是为了给初学者参考 */ session_start(); function set_token() { $_S ...

  10. Abstract Factory Step by Step --- 抽象工厂

    抽象工厂是创建型模式的代表,其他的还有单件(Singleton).生成器(Builder).工厂方法(Factory Method)以及原型(Prototype),模式本身没有好坏之分,只有适用不适用 ...