主题:求助!
bond007
[专家分:130] 发布于 2007-08-02 08:40:00
火车从始发站(称为第1站)开出,在始发站上车的人数为A;然后到达第2站,在第2站有人上、下车,但上下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为A人。从第3站起(包括第3站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第N-1站),都满足此规律。现给出的条件是:共有N个车站,始发站上车的人数为A,最后 一站下车的人数是M(全部下车)。请编程求出从X站开出时车上的人数是多少?
输入为:A,N,M和X(N,X均小于23);
输出为:X站开出时车上的人数。
求助!
回复列表 (共3个回复)
沙发
wzc1996 [专家分:1680] 发布于 2007-08-02 08:51:00
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
板凳
wzc1996 [专家分:1680] 发布于 2007-08-02 11:38:00
算法:
(至少有三个车站)设第二站上车的人数为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 楼
Matodied [专家分:7560] 发布于 2007-08-02 12:59:00
又是抄我的!!!!!!!!!!!!!!!!!!!!!!!!!
程序: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
我来回复