博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Divisibility题解
阅读量:4691 次
发布时间:2019-06-09

本文共 859 字,大约阅读时间需要 2 分钟。

From lyh 学长

2018.5.3 信(liang)心(liang)杯T3

一道略弱的数论题。

 

 

题目描述

给定 n个数,问是否能从中选出恰好 k个数,使得这些数两两之差可以被 m 整除。

输入输出格式

输入格式:

 

第一行输入三个正整数 n,k,m。

接下来一行 n个正整数。

输出格式:

 

若不能选出 k个数,则输出"No "(不包含引号)。

若可以,第一行输出" Yes"(不包含引号),第二行输出 k个正整数,用空格隔开,如果有多种方案,输出字典序最小的方案。

样例一

输入:3 2 3 1 8 4

输出:Yes

      1 4

样例二

输入:3 3 3 1 8 4

输出:No

样例三

输入:4 3 5 2 7 7 7

输出:Yes

     2 7 7

解析

可用简单同余知识来处理然而我考试时是用DP做的。

一道略弱的数论题。

若两数之差被m整除,则这两个数关于m同余。

轻松解出。

1 #include
2 using namespace std; 3 int main(){ 4 int al[1000002],bl[1000002],cl[1000002],m,n,k,l=0,q; 5 scanf("%d%d%d",&n,&k,&m); 6 for(int i=1;i<=n;i++) 7 scanf("%d",&al[i]); 8 sort(al+1,al+1+n); 9 for(int i=1;i<=n;i++)10 cl[i]=al[i]%m;11 for(int i=1;i<=n;i++)12 bl[cl[i]]++;13 for(int i=1;i
=k){15 cout<<"Yes"<

 

 

转载于:https://www.cnblogs.com/wzyzxy/p/9321441.html

你可能感兴趣的文章
分银子
查看>>
fiddler抓包后Jmeter实现登录接口
查看>>
士兵杀敌(三)_RMQ(区间最值查询)
查看>>
实验十四:线程设计
查看>>
selenium自动化测试配置工具整理
查看>>
XE5 搭建DataSnap服务
查看>>
ADO BUG之'无法为更新定位行....' 解决之道
查看>>
多播技术总结
查看>>
hdu-5656 CA Loves GCD(dp+数论)
查看>>
鸟哥的Linux私房菜第零章
查看>>
深度优先遍历(Depth-First Traversa Undirected Graph)
查看>>
BZOJ 1878: [SDOI2009]HH的项链【莫队】
查看>>
[51nod]2128 前缀异或【数学题】
查看>>
VS2010 开发VC++ 生成release版本动态库配置
查看>>
win10 打开注册表
查看>>
来自投资理财新手的分享
查看>>
2019牛客多校第四场 A meeting
查看>>
Git钩子:自定义你的工作流
查看>>
[android]netd与NetworkManagementService初印象
查看>>
ReactJS基础(续)
查看>>