回 帖 发 新 帖 刷新版面

主题:求救!这道题我错了,请高手请教。

    一位数学家和一些游客共81人不幸落入强盗手中,强盗把俘虏排成一队,宣布每天处理所有第2的N次方个俘虏(N>=0),而只放走剩下的最后一个。由于数学家身怀重任,不得不选择了一个恰当的位置而最终被放走。请问他归初排在第几个位置。 答案:80

回复列表 (共4个回复)

沙发

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.

板凳

大家也可以把自己的做法写下来

3 楼

是个有趣的题目!!
“宣布每天处理所有第2的N次方个俘虏(N>=0)”,这句话不胜理解

若我理解为“将所有俘虏排成一队,从1开始报数,每天处理所有报数为2的N次方的俘虏(N>=0)”,则答案为63

ps:在下不懂PASCAL,多包涵

4 楼

这道题我已经解了

我来回复

您尚未登录,请登录后再回复。点此登录或注册