#include<stdio.h>
#include<string.h>
using namespace std;
int num[100010];
int flag[100010];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(flag,0,sizeof(flag));
int n,m;
scanf("%d%d",&n,&m);
flag[0]=1;
for(int i=0; i<n; i++)
{
int a;
scanf("%d",&a);
if(i!=0)
{
num[i]=num[i-1]+a;
}
else
{
num[i]=a;
}
}
int an=0;
for(int i=0; i<n; i++) //不需要 n方 找相同的 只要再开一个数组
{
if(flag[num[i]%m]==1)
an=1;
flag[num[i]%m]=1;
}
if(an==1)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
}
依赖算法和数据结构,而不去动脑想问题了。思维僵化。
sum
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 25 Accepted Submission(s): 15
Problem Description
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.
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
Source
Recommend