complicated_world 2016-08-11 12:53 采纳率: 0%
浏览 959

poj1465 WA 较怪 求解

与同学对拍过,但一交就错

#include
#include
#include
#include
#include
#include
using namespace std;

struct f1
{
int d[101],s,t;

}f[10000],a;
int i,j,k,n,m,b[15],r;
bool fl[5050],flag;

void cale(int i)
{
int r=a.t;
if(a.d[r]>999) {a.t++;a.d[r+1]=a.d[r]/1000;}

for(j=r;j>=1;j--)
{
a.d[j]=(a.d[j]*10+a.d[j-1]/1000)%10000;
}
a.d[1]+=i;
}

void bfs()
{
int l=1,i;
while(l<=r)
{
for(i=1;i<=m;i++)
{
a=f[l];
a.s=(a.s*(10%n)%n+b[i]%n)%n;
if(!fl[a.s])
{
fl[a.s]=true;
cale(b[i]);
r++;
f[r]=a;
}
if(a.s==0)
{
cout< for(int u=a.t-1;u>=1;u--)
{
k=999;
while(a.d[u]<k)
{
cout<<'0';
k/=10;
}
printf("%d",a.d[u]);
}
flag=true;
cout<<endl;
return;
}
}
l++;
}
}

void qsort(int l,int r)
{
int i=l,j=r,x=b[(l+r)/2];
while (i<=j)
{
while (b[i] while (b[j]>x) j--;
if (i<=j)
{
k=b[i];b[i]=b[j];b[j]=k;
i++;j--;
}
}
if (i<r) qsort(i,r);
if (l<j) qsort(l,j);
}

int main()
{
while(scanf("%d%d",&n,&m)==2)
{
r=0;
for(i=1;i<=m;i++)
{
scanf("%d",&b[i]);
if(b[i]==n) {cout<<n<<endl; continue;}
}
if(n==0) {cout<<n<<endl; continue;}
qsort(1,m);
flag=false;
for(i=1;i<10000;i++)
{
f[i].s=f[i].t=0;
memset(f[i].d,0,sizeof(f[i].d));
}
memset(fl,false,sizeof(fl));
for(i=1;i<=m;i++)
if(b[i]!=0)
{r++;f[r].d[1]=b[i];f[r].s=b[i]%n;f[r].t=1; fl[f[r].s]=true;}
bfs();
if(!flag) cout<<0<<endl;
}
return 0;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-08-11 15:48
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名