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 \leq T \leq 101≤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 \leq n \leq 1000001≤n≤100000, 1 \leq m \leq 50001≤m≤5000). 2.The second line contains n positive integers x (1 \leq x \leq 1001≤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
题意:能不能找一个连续子区间的值等于m
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int a[100005];
int main ()
{
int t,n,m;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
int r=1,sum=0,flag=0;
for(int i=1;i<=n;i++){
while(r<=n&&sum<m)
sum+=a[r++];
if(sum==m){
flag=1;
break;
}
sum-=a[i];
}
if(flag)
printf("YES\n");
else printf("NO\n");
}
}
sum Accepts: 823 Submissions: 1744 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Problem DescriptionGiven a sequence, you