| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求助 为何WA...同余,但总WA,请高手指点.
我总怀疑是输入输出有问题...
#include<stdio.h>
#include<deque>
#include<string>
#include<math.h>
using namespace std;
struct node
{
int mod,pos;
};
deque<node> que;
int f[102],num[10002];
int T,n,k;
void clean(void)
{
memset(f,0,sizeof(f));
memset(num,0,sizeof(num));
que.clear();
}
int make(void)
{
if ((n==1)&&(num[1]%k==0))
return 1;
int temp,bignum;
node p,q;
q.mod=num[1]%k;
q.pos=1;
que.push_back(q);
while(!que.empty())
{
p=*que.begin();
if ((p.pos)==(n-1))
{
if (((p.mod+num[n])%k==0)||((p.mod-num[n])%k==0))
return 1;
}
else
{
bignum=p.mod+num[p.pos+1];
temp=bignum%k;
if (f[temp]==0)
{
f[temp]=1;
q.mod=temp;
q.pos=p.pos+1;
que.push_back(q);
}
bignum=p.mod-num[p.pos+1];
temp=bignum%k;
if (f[temp]==0)
{
f[temp]=1;
q.mod=temp;
q.pos=p.pos+1;
que.push_back(q);
}
}
que.pop_front();
}
return 0;
}
void print(int Case)
{
if (Case==1)
printf("Divisible\n");
else
printf("Not divisible\n");
}
int main(void)
{
int i;
scanf("%d",&T);
while((T--)>0)
{
clean();
scanf("%d %d",&n,&k);
for(i=1;i<=n;i++)
scanf("%d",num+i);
print(make());
if (T>0)
printf("\n");
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator