Codeforces 577B Modulo Sum 鸽巢原理

来源:互联网 发布:黄静案 知乎 编辑:程序博客网 时间:2024/06/05 17:49

题意略。

解析:把取模后的结果0...m-1看为盒子。

当n>m时,根据鸽巢原理,至少有一个盒子里有两个以上的球,结果必然是YES。

当n<=m是,扫一遍即可。

代码:

#include<cstdio>#include<cstring>using namespace std;typedef long long LL;int n,m,a,b[1005],c[1005];int main(){    int i,j;    scanf("%d%d",&n,&m);    if(n > m){        puts("YES");        return 0;    }    while(n--){        scanf("%d",&a);        c[a%m]=b[a%m]+1;        for(i = 1;i < m;i++){            if(b[i])c[(i+a)%m]=b[(i+a)%m]+1;        }        memcpy(b,c,m*sizeof(int));    }    if(b[0]) puts("YES");    else puts("NO");    return 0;}


0 0
原创粉丝点击