我是靠谱客的博主 文艺鸭子,这篇文章主要介绍CodeForces 876B Divisiblity of Differences(思维 + 数学),现在分享给大家,希望可以做个参考。

题目:点击打开链接

题意:从n个数中找到k个数,满足任意两者的差能够除尽m。

思路:设两个数a、b,若(a - b)% m = 0,则a可写成k1*m + c,b可写成k2*m + c,所以根据对m取余的结果把n个数分类即可。

// Code Forces 876B Divisiblity of Differences 运行/限制:61ms/1000ms
#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;
vector<int> v[100005];
int main(){
int n, k, m, num, flag;
while (scanf("%d%d%d", &n, &k, &m) != EOF) {
for (int i = 0; i < n; i++) {
scanf("%d", &num);
v[num % m].push_back(num);
}
flag = 1;
for (int j = 0; j < m && flag; j++) {
if (v[j].size() >= k) {
flag = 0;
printf("Yesn");
for (int t = 0; t < k; t++) {
printf("%d%c", v[j][t], t == k - 1 ? 'n' : ' ');
}
}
}
if (flag) printf("Non");
for (int j = 0; j < m; j++) {
v[j].clear();
}
}
return 0;
}


最后

以上就是文艺鸭子最近收集整理的关于CodeForces 876B Divisiblity of Differences(思维 + 数学)的全部内容,更多相关CodeForces内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(159)

评论列表共有 0 条评论

立即
投稿
返回
顶部