链接:
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88171#problem/F
代码:
#include <cstdio> #include <cstring> #include <algorithm> #define maxn 20000 using namespace std; int t; int n,k; int a[maxn]; bool flag; bool dp[maxn][110]; int main() { scanf("%d",&t); while(t--) { memset(dp,false,sizeof(dp)); scanf("%d%d",&n,&k); for(int i=0; i<n; i++) { scanf("%d",&a[i]); } dp[0][abs(a[0])%k]=true; for(int i=1; i<n; i++) { for(int j=0; j<k; j++) { if(dp[i-1][j]) { dp[i][(j+k+abs(a[i]))%k]=true; dp[i][((j+k-abs(a[i]))%k+k)%k]=true; } } } if(dp[n-1][0]) printf("Divisible\n"); else printf("Not divisible\n"); } return 0; }
勿忘初心