高悬赏free pascal题目,大师过来看一下。。
15、A,B,C,D,E五个人合伙夜间捕鱼,凌晨时都疲惫不堪,各自在河边的树丛中找地方睡着了,日上三竿,E第一个醒来,他将鱼数了数,平分成五分,把多余的一条扔进河中,拿走...
15、A,B,C,D,E五个人合伙夜间捕鱼,凌晨时都疲惫不堪,各自在河边的树丛中找地 方睡着了,日上三竿,E第一个醒来,他将鱼数了数,平分成五分,把多余的一条扔进河中, 拿走一份回家去了,D第二个醒来,他并不知道有人已经走了,照样将鱼平分成五分,又扔 掉多余的一条,拿走自己的一份,接着C,B,A依次醒来,也都按同样的办法分鱼(平分成 五份,扔掉多余的一条,拿走自己的一份),问五人至少合伙捕到多少条鱼。也许你能用数学办法推出鱼的条数,但我们的要求你编出一个程序,让计算机帮你算出鱼的总数。
请用循环语句,不要用function和数组。这道题比较复杂,最好能注释一下。。 展开
请用循环语句,不要用function和数组。这道题比较复杂,最好能注释一下。。 展开
1个回答
展开全部
//明显是递推
var
s,i,j:longint;
candiv:boolean;
begin
for j:=1 to 100 do begin
//这里j的循环大了点。。不过也无所谓,后来只要找到了就直接退出了
s:=j;
candiv:=true;
for i:=1 to 5 do
if s mod 4=0 then s:=s div 4{或 shl 2,也一样}*5+1
//每次每人拿走的都是当前鱼条数减1的1/5,可以简单推出
else begin//不能整除,退出当前循环
candiv:=false;
break;
end;
if candiv then begin
writeln(s);
break;
end;
end;
end.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询