主题:Who can help me???(加分)
HarryPotter
[专家分:20] 发布于 2005-12-05 20:31:00
1、旅馆里有一百个房间,从1到100编了号,第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”……,以后都是如此。问第100个服务员来过后,哪几扇门是打开的?[em4][em5][em6]
2、n只猴子选大王,选举办法如下:从头到尾1、2、3报数,凡报3的退出;余下的从尾到头1、2、3报数,凡报3的退出;余下的又从头到尾报数,还是报3的退出;依此类推,当剩下两只猴子时,取这时报数报1的为王,若想当猴王,请问当初应占据什么位置?(其中n从键盘输入)[em7][em8][em9]
用一维数组做,拜托!!![em15][em16]
回复列表 (共4个回复)
沙发
wanggcc [专家分:1450] 发布于 2005-12-06 16:13:00
都是很难的题啊,想都得想半天
板凳
xuzhenyi [专家分:850] 发布于 2005-12-06 19:13:00
var a:array[1..m] of integer;
n,i,j,k:integer;
begin
write('N= ');readln(m);
for i:=1 to m do
begin
a[i]:=i;
end;
k:=0;
readln(n);
for i:=1 to m do
begin
for j:=1 to n do
begin
if k<=m-1 then k:=a[k+1] else
k:=1;
end;
write(a[k]:3);
end;
readln;
end.
3 楼
xuzhenyi [专家分:850] 发布于 2005-12-06 19:14:00
var a:array[1..1000] of integer;
m,n,i,j,k:integer;
begin
write('N= ');readln(m);
for i:=1 to m do
begin
a[i]:=i;
end;
k:=0;
readln(n);
for i:=1 to m do
begin
for j:=1 to n do
begin
if k<=m-1 then k:=a[k+1] else
k:=1;
end;
write(a[k]:3);
end;
end.
4 楼
xuzhenyi [专家分:850] 发布于 2005-12-06 19:26:00
const
fangjian=100;
var
m,n,i,j,k:integer;
a:array[1..1000] of 0..1;
begin
readln(n);
fillchar(a,sizeof(a),1);
for i:=2 to n do
for j:= 1 to fangjian do begin
if j mod i=0 then a[j]:=abs(1-a[j]);
end;
for i:=1 to fangjian do begin
write(i,':');
if a[i]=1 then write('open ') else write('close ');
end;
readln;
end.
第一个程序
var a:array[1..1000] of integer;
m,n,i,j,k:integer;
begin
write('N= ');readln(m);
for i:=1 to m do
begin
a[i]:=i;
end;
k:=0;
readln(n);
for i:=1 to m do
begin
for j:=1 to n do
begin
if k<=m-1 then k:=a[k+1] else
k:=1;
end;
write(a[k]:3);
end;
end.
第二个程序
我来回复