CodeForces-876B Divisiblity of Differences

来源:互联网 发布:php 数组转换字符串 编辑:程序博客网 时间:2024/05/22 10:26

CodeForces-876B Divisiblity of Differences

标签:水题


题目链接

/*    题意:给n个数,选k个,要求在k里面任选2个数都能被m整除。          注意n里面可以有相同的数。    思路:对每个数initial[i],保存initial[i]%m在mod[i]。          找出现次数(ans)最多的那个余数,若ans >= k,有解;否组无解。见代码。*/#include <stdio.h>#include <algorithm>using namespace std;const int maxn = 100005;int initial[maxn], mod[maxn];int main(){    int n, k, m;    while(scanf("%d %d %d", &n, &k, &m) != EOF)    {        for(int i = 0; i < n; i++)        {            scanf("%d", &initial[i]);            mod[i] = initial[i] % m;  //        }        sort(mod, mod + n);  //找出现次数(ans)最多的那个余数        int temp = mod[0], total = 0, ans = 0, flag;        for(int i = 0; i < n; i++)        {            if(temp == mod[i])  total++;            else            {                temp = mod[i];                total = 1;  //total = 1            }            if(total > ans)            {                ans = total;                flag = temp;            }        }        if(ans >= k)  //输出        {            printf("Yes\n");            int time = 0;            for(int i = 0; i < n; i++)            {                if(initial[i] % m == flag && time < k)  //time < k, 选k个数                {                    printf("%d ", initial[i]);                    time++;                }            }            printf("\n");        }        else  printf("No\n");    }    return 0;}