我想问大家一到很简单的PASCAL题:

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

简单约塞夫(小朋友出圈)问题!
1.算出2的N次方
2.模拟强盗处理俘虏
3.看看剩下的人编号是多少
参考程序:
var
temp:array[1..82]of boolean;
n,m,i,j,k:integer;
begin
fillchar(temp,sizeof(temp),true);
readln(n);
m:=1;
for i:=1 to n do m:=m*2;
for i:=1 to n-1 do
begin
j:=0;
k:=0;
repeat
inc(j);
if j>82 then j:=1;
if temp[j] then inc(k);
until k=m;
end;
for i:=1 to 82 do if temp[i] then writeln(i);
end.
//如果有小错误,自己解决