【noi 2.6_747】Divisibility(DP)
这题题意与前面的“判断整除”重复了。具体解释可看我这篇的博文。
http://www.cnblogs.com/konjak/p/5936738.html
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 #define N 10010 7 #define K 110 8 int a[N],f[N][K]; 9 10 int main() 11 { 12 int i,j,n,k; 13 scanf("%d%d",&n,&k); 14 for (i=1;i<=n;i++) 15 scanf("%d",&a[i]),a[i]%=k; 16 f[0][0]=1; 17 for (j=1;j<k;j++) f[0][j]=0; 18 for (i=1;i<=n;i++) 19 for (j=0;j<k;j++) 20 { 21 int x=(j-a[i]+k)%k,y=(j+a[i]+k)%k; 22 f[i][j]=f[i-1][x]|f[i-1][y]; 23 } 24 if (f[n][0]) printf("Divisible\n"); 25 else printf("Not divisible\n"); 26 return 0; 27 }