题目
Given a sequence, you’re asked whether there exists a consecutive subsequence whose sum is divisible by m. output YES, otherwise output NO
Input
The first line of the input has an integer T (1≤T≤10), which represents the number of test cases.
For each test case, there are two lines:
1.The first line contains two positive integers n, m (1≤n≤100000, 1≤m≤5000).
2.The second line contains n positive integers x (1≤x≤100) according to the sequence.
Output
Output T lines, each line print a YES or NO.
Sample Input
2
3 3
1 2 3
5 7
6 6 6 6 6
Sample Output
YES
NO
#include<bits/stdc++.h>
using namespace std;
#define maxn 11111
int t,n,m,x,sum,mark,flag[maxn];
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
sum=mark=0;
memset(flag,0,sizeof(flag));
flag[0]=1;
for(int i=1;i<=n;i++)
{
cin>>x;
sum=(sum+x)%m;
if(!flag[sum])flag[sum]=1;
else mark=1;
}
if(mark==1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}