主题:求救!这道题我错了,请高手请教。
济公二世
[专家分:200] 发布于 2006-08-16 10:40:00
一位数学家和一些游客共81人不幸落入强盗手中,强盗把俘虏排成一队,宣布每天处理所有第2的N次方个俘虏(N>=0),而只放走剩下的最后一个。由于数学家身怀重任,不得不选择了一个恰当的位置而最终被放走。请问他归初排在第几个位置。 答案:80
回复列表 (共4个回复)
沙发
济公二世 [专家分:200] 发布于 2006-08-16 10:45:00
program t2;
var
i,k,f,d,we:integer;
dd:array[1..81] of integer;
begin
for i:=1 to 81 do
dd[i]:=i; d:=81;
repeat
for k:=0 to 6 do
begin if d>1 then
begin
if k=0 then begin f:=1; dd[f]:=0; d:=d-1; end
else begin f:=f*2; dd[f]:=0; d:=d-1; end end
end; i:=0;
repeat
i:=i+1;
if dd[i]=0 then
begin
for k:=i to 81 do
dd[k]:=dd[k+1];
if dd[i+1]=0 then i:=i-1;
end;
until i>d; we:=d;
until we<2; for i:=1 to 81 do
if dd[i]<>0 then begin
writeln(i,' ', dd[i]); end; writeln(d); writeln(dd[1]);
end.
板凳
济公二世 [专家分:200] 发布于 2006-08-16 10:46:00
大家也可以把自己的做法写下来
3 楼
billgacsli [专家分:1300] 发布于 2006-08-16 23:28:00
是个有趣的题目!!
“宣布每天处理所有第2的N次方个俘虏(N>=0)”,这句话不胜理解
若我理解为“将所有俘虏排成一队,从1开始报数,每天处理所有报数为2的N次方的俘虏(N>=0)”,则答案为63
ps:在下不懂PASCAL,多包涵
4 楼
济公二世 [专家分:200] 发布于 2006-08-17 15:05:00
这道题我已经解了
我来回复