回 帖 发 新 帖 刷新版面

主题:求助!


火车从始发站(称为第1站)开出,在始发站上车的人数为A;然后到达第2站,在第2站有人上、下车,但上下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为A人。从第3站起(包括第3站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第N-1站),都满足此规律。现给出的条件是:共有N个车站,始发站上车的人数为A,最后 一站下车的人数是M(全部下车)。请编程求出从X站开出时车上的人数是多少?
输入为:A,N,M和X(N,X均小于23);
输出为:X站开出时车上的人数。
求助!

回复列表 (共3个回复)

沙发

CLS
INPUT A: INPUT N: INPUT M: INPUT X
DIM A(N), B(N), X(N)
A(1) = A: B(1) = 0: X(2) = A: X(1) = A
DO
S = S + 1
A(2) = S: B(2) = 2
FOR I = 3 TO N - 1
A(I) = A(I - 1) + A(I - 2)
B(I) = A(I - 1)
X(I) = X(I - 1) + A(I) - B(I)
NEXT I
IF X(N - 1) = M THEN PRINT X(X): END
LOOP
END

板凳

算法:
(至少有三个车站)设第二站上车的人数为F(下车人数也为F),则每站开出后的人数:

站数      1      2       3       4      5      6     ……    N
上车人数  A      F      A+F     A+2F  2A+3F  3A+5F   ……    0
下车人数  0      F       F      A+F    A+2F  2A+3F   ……    M
总人数    A      A       2A     2A+F  3A+2F  4A+4F   ……    0

可以看出,每一站开出后车上总人数等于该站上车人数加一个A再减一个F。
那么,上车人数又怎么求呢?
设某站上车人数等于SA+TF,把所有S和T的值列出来:

站数  1  2  3  4  5  6   ……   
S     1  0  1  1  2  3   ……
T     0  1  1  2  3  5   ……   

可得出S(1)=1,S(2)=0,T(1)=0,之后S(I)=S(I-1)+S(I-2),T(I)=S(I+1),T(N-1)=T(N-2)+T(N-3)
可求出F的值:(M-(S(N-1)+1)*A)/(T(N-1)-1)
第X站时车上的人数:(S(X)+1)*A+(T(X)-1)*F

3 楼

又是抄我的!!!!!!!!!!!!!!!!!!!!!!!!!

程序:CLS
INPUT a,n,m,x
DIM s(n-1),t(n-1)
s(1)=1:s(2)=0:t(1)=0
FOR i=3 TO n-1
    s(i)=s(i-1)+s(i-2)
    t(i-1)=s(i)
NEXT i
IF n=3 THEN
   t(2)=1
ELSE
   t(n-1)=t(n-2)+t(n-3)
END IF
s=s(n-1)+1:t=t(n-1)-1
f=(m-s*a)/t
IF x=1 THEN
   PRINT a
ELSE
   PRINT (s(x)+1)*a+(t(x)-1)*f
END IF
END

我来回复

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