这次到渣渣问桶桶了。。。

准备给你n个数a1, a2, ... an,桶桶你能从中找出m个特别的整数吗,我想让任意两个之差都是k的倍数。

请你计算有多少种不同的选法。由于选法可能非常多,你只需要输出对1000000009取模的结果。

Input 第一行包含三个整数n、m和k。

第二行包含n个整数a1, a2, ... an。

对于30%的数据,2 ≤ m ≤ n ≤ 10

对于100%的数据,2 ≤ m ≤ n ≤ 100 1 ≤ k, ai ≤ 100

Output 一个整数表示答案。

Sample Input
5 3 2
1 2 3 4 5
Sample Output
1

思路

  • [ ] 题意:给我们n个数,让我们找出 由m个数组成的方案数(组成的这m个数的中的任意两个之间相差都要是k)
  • [ ] 分析:让这个n个数 都取余k,那么余数相同的 数之间必定相差都是k,所以我们可以同 桶排 中的桶 去统计 在这个n个数中余数为1到k-1的数的个数,之后对于 对于每个余数我们考虑:看它的个数是否大于等于m,如果大于的话我们就用数学中的 排列组合知识 去求方案数。
  • 特别注意在 排列方案数\(C_x^y\)的时候,时候我们不能 乘完再除,这样有可能超 long long,所以要边乘边除 主要代码如下
ll ans = 1
for(int i = 1; i <= y; i ++)
ans = ans*(x + 1 - i) / i ;

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std; #define ll long long
const ll mod = 1000000009; ll work(ll n, ll m)
{
ll res = 1;
/* for(int i = n; i >= n - m + 1; i --) */
/* res *= i; */
/* for(int i = 1; i <= m; i ++) */
/* res /= i; */
for(int i = 1; i <= m; i ++)
res = res*(n + 1 - i)/i;
return res;
} int main()
{
/* freopen("A.txt","r",stdin); */
ll n, m, k;
scanf("%lld %lld %lld", &n, &m, &k);
int x;
int bar[105] = {0};
for(int i = 1; i <= n; i ++)
{
scanf("%d", &x);
bar[x % k] ++;
}
ll ans = 0;
for(int i = 0; i < k; i ++)
{
if(bar[i] >= m)
ans += work(bar[i], m), ans %= mod;
}
printf("%lld\n", ans); return 0;
}

B - 来找一找吧 HihoCoder - 1701(排列组合 + 同余差值相同)的更多相关文章

  1. hihocoder 1579(排列组合)

    题意 给出一个长度为n的字符串的sa数组,n<=1e5,问有多少种不同的字符串的sa数组正好是输入的sa数组(字符串每个位置都是小写字母) 分析 sa数组描述的是字符的大小关系,而不是确切的字符 ...

  2. B - 来找一找吧 HihoCoder - 1701

    题目: 这次到渣渣问桶桶了... 准备给你n个数a1, a2, ... an,桶桶你能从中找出m个特别的整数吗,我想让任意两个之差都是k的倍数. 请你计算有多少种不同的选法.由于选法可能非常多,你只需 ...

  3. tyvj1013 找啊找啊找GF

    描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊..."七夕...七夕...七夕这个日子,对于sqybi这种单身的 ...

  4. BZOJ-1228 E&D 博弈SG+找啊找啊找规律

    讨厌博弈,找规律找半天还是错的.... 1228: [SDOI2009]E&D Time Limit: 10 Sec Memory Limit: 162 MB Submit: 666 Solv ...

  5. TYVJ P1013 找啊找啊找GF Label:动态规划

    做题记录:2016-08-15 22:19:04 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊.. ...

  6. 找啊找啊找GF

    P1013 找啊找啊找GF 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手, ...

  7. Delphi下实现全屏快速找图找色

    前言 最近有好几个朋友都在问我找图找色的问题,奇怪?于是乎写了一个专门用于找图找色的单元文件“BitmapData.pas”.在这个单元文件中我实现了从文件中导入位图.屏幕截图.鼠标指针截图.在图片上 ...

  8. P1509 找啊找啊找GF

    P1509 找啊找啊找GF 题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七 ...

  9. C#实现按键精灵的'找图' '找色' '找字'的功能

    http://www.cnblogs.com/JimmyBright/p/4355862.html 背景:游戏辅助功能通常使用按键精灵编写脚本,按键精灵的最大卖点就是能够找到画面中字,图,色,这对于模 ...

随机推荐

  1. volatile关键字的理解

    volatile是java语言提供的一种稍弱的同步机制,它的作用是能够保证被volatile修饰的变量,每个线程在获取它的值时都能获取到最新的值. 要理解这个原理首先要知道java内存模型:每个线程都 ...

  2. 第八章、小节三keep-alive

    主要缓存的是ajax中的json 我的路由中的内容被加载过一次,我就把路由中的内容放到内存中,下次再进入这个路由的时候,不需要重新加载页面,直接从内存中获取数据. 切换不同城市,调用不同城市数据 但是 ...

  3. 分享一个快速审查js操作Dom的css

    第一步 打开开发者工具第二步 打开 Sources 面板第三步 执行用户操作让对象可见(例如鼠标悬停)第四步 在元素可见的时候按下 F8(与“暂停脚本执行”按钮相同)第五步 点击开发者工具左上角的“选 ...

  4. nes 红白机模拟器 第2篇 InfoNES

    InfoNES 支持 map ,声音,代码比较少,方便 移值. 在上个 LiteNES  的基础上,其实不到半小时就移值好了这个,但问题是,一直是黑屏.InfoNES_LoadFrame ()  Wo ...

  5. Fortify Audit Workbench 笔记 Cross-Site Scripting-Persistent

    Cross-Site Scripting: Persistent Abstract 向 Web 浏览器发送非法数据会导致浏览器执行恶意代码. Explanation Cross-Site Script ...

  6. 04-influxdb基本操作

    influxdb基本操作 1. 数据库基本操作 # 创建数据库 > create database db01; # 查看数据库 > show databases; name: databa ...

  7. guava限流器RateLimiter原理及源码分析

    前言 RateLimiter是基于令牌桶算法实现的一个多线程限流器,它可以将请求均匀的进行处理,当然他并不是一个分布式限流器,只是对单机进行限流.它可以应用在定时拉取接口数据, 预防单机过大流量使用. ...

  8. C++ 动态创建链表

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> struct Node { int data; Node* next; }; Nod ...

  9. vquery 一些应用

    // JavaScript Document function myAddEvent(obj,sEv,fn){ if(obj.attachEvent){ obj.attachEvent('on'+sE ...

  10. python3.4.3 连接Oracle生成报表并发送邮件

    python很简单,又很实用.当有需求时用起来会更有方向,大可不必从语法.循环等基础看起. 由于工作需要,每天要拉一份报表发给业务的同事,先是用SSIS做了个包部署到服务器上,每天定时拉报表发邮件给同 ...