Codeforces 876 B Divisiblity of Differences 基础数学

来源:互联网 发布:java集合类视频教程 编辑:程序博客网 时间:2024/05/22 03:31

题意

给出n,k,m(100000),n个数(1e9),从中选出k个数使得任意两个数的差为m.

解法

全取模,如果模的一个结果的个数>=k,就用它.全没超过,则不可能.

其他

重写盲交错误:
1.未定义ans.—–使用先定义.
2.两次使用i——-索引变量具体名字,改习惯
3.i与have[i]搞混–索引变量具体名字,改习惯.

代码

/* LittleFall : Hello! */#include <bits/stdc++.h>using namespace std;#define M 100016int save[M],have[M];int main(void){    int n,k,m;    scanf("%d%d%d",&n,&k,&m);    for(int i=0;i<n;i++)    {        scanf("%d",&save[i]);        have[save[i]%m]++;    }    int ans=0;    for(int i=0;i<m;i++)    {        if(have[i]>=k)        {            printf("Yes\n");            for(int j=0;j<n;j++)            {                if(save[j]%m==i)                {                    printf("%d ",save[j] );                    ans++;                    if(ans==k)                        return 0;                }            }        }    }    printf("No\n");    return 0;}
原创粉丝点击