Source Code

Problem:
1745 User: eth1
Memory: 280K Time: 360MS
Language: C
++ Result: Accepted
Source Code
#include
<iostream>
#include
<cstring>
#include
<algorithm>
using namespace std;
int f[10005],flag,n,k;
bool ans[2][105];
int main()
{
int a;
cin
>>n>>k;
for(int i=0;i<n;i++)
{
cin
>>a;
f[i]
=abs(a)%k;
}
for(int i=0;i<k;i++) ans[0][i]=0;
ans[
0][f[0]]=1;
for(int i=1;i<n;i++)
{
int t=i%2;
int tt=(t+1)%2;
for(int j=0;j<k;j++) ans[t][j]=0;
for(int j=0;j<k;j++)
{
if(ans[tt][j])
{
ans[t][(j
+f[i])%k]=1;
ans[t][abs(j
-f[i])%k]=1;
}
}
}
if(ans[(n-1)%2][0]) cout<<"Divisible"<<endl;
else cout<<"Not divisible"<<endl;
return 0;
}
/*******************************************************/
ps : 滚动数组利用的就是前后两者之间的关系.

 posted on 2011-05-09 16:37  eth0  阅读(112)  评论(0编辑  收藏  举报