CodeForces 876B Divisiblity of Differences(思维 + 数学)

来源:互联网 发布:广州旅拍工作室 知乎 编辑:程序博客网 时间:2024/05/17 04:56

题目:点击打开链接

题意:从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("Yes\n");for (int t = 0; t < k; t++) {printf("%d%c", v[j][t], t == k - 1 ? '\n' : ' ');}}}if (flag) printf("No\n");for (int j = 0; j < m; j++) {v[j].clear();}}    return 0;}


阅读全文
1 0