猜了一下,发现对了。n>m是一定有解的。所以最多m*m暴力,一定能找到。而T较小,所以能过。
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0),eps=1e-;
void File()
{
freopen("D:\\in.txt","r",stdin);
freopen("D:\\out.txt","w",stdout);
}
inline int read()
{
char c = getchar(); while(!isdigit(c)) c = getchar();
int x = ;
while(isdigit(c)) { x = x * + c - ''; c = getchar(); }
return x;
} int a[+],sum[+];
int n,m; int main()
{
int T; scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
if(n>m) { printf("YES\n"); continue; }
sum[]=; for(int i=;i<=n;i++) sum[i]=a[i]+sum[i-];
int ans=;
for(int i=;i<=n;i++) for(int j=i;j<=n;j++)
if((sum[j]-sum[i-])%m==) ans=;
if(ans==) printf("YES\n"); else printf("NO\n");
}
return ;
}