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 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?