HDU

来源:互联网 发布:mac pdf转word 编辑:程序博客网 时间:2024/05/30 13:41

也算是 一个前缀数组 吧
a[i] == 0 -> a[i] 及前面串的和 是 m 倍数
a[i] == a[j] -> a[i] 和 a[j] 之间串 是 m 倍数

#include <iostream>#include<cstdio>#include <cstring>using namespace std;const int maxn = 100000 + 10;int a[maxn], T, n, m;void init() {    scanf("%d%d", &n, &m);    int sum = 0, x;    for(int i = 1; i <= n; ++i) {        scanf("%d", &x);        sum += x;        a[i] = sum % m;        //cout << a[i] << endl;    }}void solve() {    for(int i = 1; i <= n; ++i) {        if(a[i] == 0) {            printf("YES\n");            return;        }        for(int j = i+1; j <= n; ++j) {            if(a[i] == a[j]) {                printf("YES\n");                return;            }        }    }    printf("NO\n");    return;}int main() {    scanf("%d", &T);    while(T--) {        init();        solve();    }    return 0;}
1 0
原创粉丝点击