杭电ACM 1230 WA求极限测试用例,或者请指出错误

http://acm.hdu.edu.cn/showproblem.php?pid=1230#include<stdio.h>#include<stdlib.h>#inc... http://acm.hdu.edu.cn/showproblem.php?pid=1230
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 200
int Prime[30];
int ai[N],bi[N],sum[N];
int la,lb;

//素数筛选器
int prime()
{
int i,j,isPrime[N];
for(i=0;i<N;i++)
isPrime[i] = 1;
isPrime[0]=0;
isPrime[1]=0;
for(i=2;i<=N;++i)
{
if(isPrime[i] == 1)
{
for(j=2*i;j<N;j=j+i)
isPrime[j] = 0;
continue;
}
}
for(i=0,j=1;i<=N,j<=30;i++)
{
if(isPrime[i])
{
Prime[j++] = i;
}
}
Prime[0] = 1;
/*for(j=0;j<=26;j++)
{
printf("%d\n",Prime[j]);
}*/

return 0;
}

int max(int a,int b)
{
return a>b?a:b;
}

//接受输入,存到数组
void input()
{
int a,i=0;
char ch;
while(1)
{
scanf("%d%c",&a,&ch);
ai[i++] = a;
if(ch != ',')
{
la = i;
break;
}
}
i = 0;
while(1)
{
scanf("%d%c",&a,&ch);
bi[i++] = a;
if(ch != ',')
{
lb = i;
break;
}
}
}

//将火星文相加
void add()
{
int i,j,max_length;

max_length = max(la,lb);

for(i=la-1;i>=0;i--)
{
sum[la-i-1] = ai[i];
}
for(i=0;i<=max_length-1;i++)
{
sum[i] += bi[lb-i-1];
if(sum[i] >= Prime[i+1])
{
sum[i] -= Prime[i+1];
sum[i+1] += 1;
}
}

for(j=30;j>=0;j--)
{
if(sum[j] != 0)
break;
}
for(i=j;i>=0;i--)
{
printf("%d",sum[i]);
if(i != 0)
printf(",");
else
printf("\n");

}
}

int main()
{
int i,flag_a=0,flag_b=0;
prime();
while(1)
{
memset(ai,0,sizeof(ai));
memset(bi,0,sizeof(bi));
memset(sum,0,sizeof(sum));
flag_a = flag_b =0;
input();
for(i=0;i<la;i++)
{
if(ai[i]!=0)
{
flag_a = 1;
break;
}
}
for(i=0;i<lb;i++)
{
if(bi[i]!=0)
{
flag_b = 1;
break;
}
}
if(flag_a==0 || flag_b==0)
break;

add();
}

return 0;
}
展开
 我来答
百度网友07c6cf4cf
2014-03-12 · TA获得超过319个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:300万
展开全部

add函数里的

sum[i] += bi[lb-i-1];

  改成

if (lb-i-1>=0) sum[i] += bi[lb-i-1];

就可以过了。

但是能过不代表你的程序没有问题……数组越界的问题极多

比如在prime函数里i的越界

for(i=2;i<=N;++i)
{
if(isPrime[i] == 1)

再比如j的越界

for(i=0,j=1;i<=N,j<=30;i++)
{
if(isPrime[i])
{
Prime[j++] = i;
}
}

另外上面的for循环,i<=N,j<=30是不是应该改成 i<=N && j<=30   ?语法还不熟啊……

富港检测技术(东莞)有限公司_
2024-05-27 广告
ISTA3E程序是对相同产品的集合包装的综合模拟性能测试,集合包装件被定义为将一个产品、多个产品或包装件放置在滑板或托盘上,固定在一起或是作为一个单元运输。例如:一台机器由带瓦楞底托的托盘上、瓦楞侧围、顶盖包装,用缠绕膜缠绕在托盘上。用于评... 点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式