我是靠谱客的博主 文艺鸭子,最近开发中收集的这篇文章主要介绍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 876B Divisiblity of Differences(思维 + 数学)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部