样例过了,提交10pts,哪位好心人帮帮忙啊
#include<bits/stdc++.h>
using namespace std;
long long t,n,k,a[1000010],now,last,tmp;
bool flag,f[2][110];
void dfs(long long now,long long sum){
if(flag==1){
return;
}
if(now>n){
// cout<<sum<<endl;
if(sum%k==0){
flag=1;
}
return;
}
dfs(now+1,sum+a[now+1]);
dfs(now+1,sum-a[now+1]);
}
long long read(){
char ch=getchar();
long long sgn=1,x=0;
while(ch<'0'||ch>'9'){
if(ch=='-'){
sgn=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch&15);
ch=getchar();
}
return x*sgn;
}
void write(long long n,bool p){
if(n<0){
putchar('-');
n=-n;
}
if(n==0){
if(p==true){
putchar('0');
}
return;
}
write(n/10,0);
putchar(n%10+'0');
}
int main(){
t=read();
while(t--){
n=read();
k=read();
for(int i=1;i<=n;i++){
a[i]=read();
}
memset(f,0,sizeof(f));
f[0][0]=1;
for(int i=1;i<=n;i++){
if(i%2==0){
now=0;
}else{
now=1;
}
if(now==0){
last=1;
}else{
last=0;
}
for(int j=0;j<k;j++){
f[now][j]=0;
}
for(int j=0;j<k;j++){
if(f[last][j]==1){
tmp=((j+a[i])%k+k)%k;
f[now][tmp]=1;
tmp=((j-a[i])%k+k)%k;
f[now][tmp]=1;
}
}
}
if(f[n%2][0]==1){
cout<<"Divisible"<<endl;
}else{
cout<<"Not Divisible"<<endl;
}
}
return 0;
}