回 帖 发 新 帖 刷新版面

主题:问题:猴子选大王

恐怕这里的每一个人都做过,但是我不知道,还请各位帮一下忙。
有N(输入)只猴子选大王,一二三一二三报数,先从头往尾数,数三的出来,全部树完后,再从尾到从数,数三的出来……重复多次,知道最后只剩两只猴子时,数一的是大王,请问,如果想当猴王,一开始应站在什么位置上?

回复列表 (共5个回复)

沙发

给程序

板凳

1 CLS
INPUT n
IF n<3 OR n>100 OR n<>INT(n) THEN 1
DIM a(n):FOR i=1 TO n:a(i)=1:NEXT i
i=0:j=0:s=n
DO
  j=j+1
  DO
    i=i+1
    IF i>n THEN i=1
  LOOP UNTIL a(i)=1
  IF j=3 THEN
     a(i)=0:j=0:s=s-1
     IF s=2 THEN
        k=i
        DO
          k=k+1
          if k>n then k=1
        LOOP UNTIL a(k)=1
        PRINT k:END
     END IF
  END IF
LOOP
END

3 楼

楼上的,你只描述了从头到尾,没描述从尾到头,还有,你的程序有些小错误

4 楼

当 N>255 的时候,用 mkl$ 代替.

N=200
s$=""
for i=1 to N
    s$=s$+chr$(i)
next
do until len(s$)<3
   z$=s$
   s$=""
   for i=1 to len(z$)
       if i mod 3 then s$=mid$(z$,i,1)+s$
   next
loop
print asc(s$)

5 楼

dim a[1000] '定义 a[1000],1000为足够多的猴子数
input n
for i= 1 to n:a[i]=i:next   '给每只猴子编号
j=n:t=1     'j 为当前猴子数,t为退出循环的标记
while(t=1)
k=1    
for i=3 to j step 3:a[k]=a[i]:k=k+1:next  '顺向数猴子,k为当前合格的猴子数    
for j=1 to k\2:swap a[j],a[k-j]:next   '将猴子序列反向排列
j=k:if j<3 then t=0      '如果猴子只有2只,t=0  退出while循环
wend
? a[1]  
end

我来回复

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