讨论 / 帮我看看有什么错呀!!!
ync7700 2008-12-16 17:51:00
点我顶贴 收藏 删除
内容:

小明想作卖油的商人。因为家里太穷,所以他买不起一般人所使用的量器,他只有一个装他所有的油的大桶子,还有两个确知容量的杯子(但上面没有刻度)。

每当客人要来买油的时候,客人会告诉他想要买多少油,小明虽然没有正常的量器,但聪明的他,利用这两个杯子容量的差异,经过若干次注满与倒空的过程,依然凑出客人所要的量。经过多日的买卖,小明渐渐发现,有些时候,有些要求的量是任凭他怎样努力都是凑不出来的。你能帮助他找出哪些量凑得出来,哪些量凑不出来吗?

输入说明:

输入档中有许多组输入,每组输入占一列。每一组输入里,会有三个以空白隔开的整数:第一个和第二个代表小明所拥有的两个杯子的容量,第三个代表客人所要求的量,单位都是公合(这三个整数都是正的,而且不会超过100)。遇到一行为三个零“0 0 0”为档案结束,不须处理这组输入。

输出说明:

对每一组测试资料,你应该输出一列。如果客人要求的量凑得出来,请输出「Yes」,否则请输出「No」。

第一组:小明可以用容量为1公合的杯子将油量给客人。

第二组:小明可以先用容量为2公合的杯子量油给客人4次,然后再用容量为1公合的杯子量给客人1次。

第三组:小明可以先把5公合的杯子注满,然后用这个5公合的杯子将3公合的杯子注满,那么在5公合的杯子里就会剩下2公合,将这2公合量给客人以后,把3公合的杯子倒空,再重覆一次,就可以量给客人总共4公合的油了。

范例输入:

1 2 1

1 2 9

3 5 4

3 6 8

0 0 0

范例输出:

Yes

Yes

Yes

No

我的程序是

program ball;

var n,m:longint;

a,b,c:array[1..200000]of longint;

begin

for n:=1 to 200000 do

begin

readln(a[n],b[n],c[n]);

if (a[n]=0) and (b[n]=0) and (c[n]=0) then break

else begin

m:=abs(a[n]-b[n]);

if m=0 then break

else begin

if c[n]=0 then break

else

if c[n] mod m=0 then writeln(’Yes’)

else writeln(’No’);

end;

end;

end;

end.

#1 ync7700@2008-12-01 21:27:00
回复 删除
他说:

与正确输出不相符(line:6)

您的答案为: No

正确答案为: Yes

#2 ync7700@2008-12-02 21:06:00
回复 删除
顶呀

#3 ync7700@2008-12-08 04:20:00
回复 删除

#4 冬日的雪花@2008-12-08 18:59:00
回复 删除
显然你错了:

m:=abs(a[n]-b[n]);

if m=0 then break

else begin

if c[n]=0 then break

else

if c[n] mod m=0 then writeln(’Yes’)

else writeln(’No’);

其中c[n] mod m=0 就判定不对了,可能会出现c[n]有m和a[n],b[n]共同组成

这应该也行吧,就是说判定是否能用a[n],b[n],m组成c[n]

#5 ync7700@2008-12-11 04:36:00
回复 删除
那要怎么做呢???
#6 冬日的雪花@2008-12-13 22:46:00
回复 删除
如果数据小可以用搜索把~~~
#7 ync7700@2008-12-14 03:11:00
回复 删除
请教大牛
#8 冬日的雪花@2008-12-16 16:56:00
回复 删除
数据范围多大啊~~把数据给我发到邮箱里,或许用无限背包也可以
#9 冬日的雪花@2008-12-16 17:51:00
回复 删除
已经给你发过去了,见消息
查看更多回复
提交回复