首页 > 代码库 > UVA 10036
UVA 10036
dp题目,
#include <iostream>
#include <string.h>
using namespace std;
int dp[10001][101];
int a[10001];
int main(){
int m,n,k,u;
while(cin>>m){
while(m--){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>u;
a[i]=(k+u%k)%k; //把每个数字都化为正数
}
memset(dp,0,sizeof(dp));
dp[0][0]=1;
for(int i=1;i<=n;i++){
for(int j=0;j<k;j++){
if(dp[i-1][j]){
dp[i][(j+a[i])%k]=1;
dp[i][(j-a[i]+k)%k]=1;
}
}
}
if(dp[n][0]==1)cout<<"Divisible"<<endl;
else cout<<"Not divisible"<<endl;
}
}
return 0;
}