1. 程式人生 > >洛谷 P1011 車站

洛谷 P1011 車站

++ -1 span 的人 scanf print blog %d 格式

題目描述

火車從始發站(稱為第1站)開出,在始發站上車的人數為a,然後到達第2站,在第2站有人上、下車,但上、下車的人數相同,因此在第2站開出時(即在到達第3站之前)車上的人數保持為a人。從第3站起(包括第3站)上、下車的人數有一定規律:上車的人數都是前兩站上車人數之和,而下車人數等於上一站上車人數,一直到終點站的前一站(第n-1站),都滿足此規律。現給出的條件是:共有N個車站,始發站上車的人數為a,最後一站下車的人數是m(全部下車)。試問x站開出時車上的人數是多少?

輸入輸出格式

輸入格式:

a(<=20),n(<=20),m(<=2000),和x(<=20),

輸出格式:

從x站開出時車上的人數。

輸入輸出樣例

輸入樣例#1:
5 7 32 4
輸出樣例#1:
13


思路稍稍有點難理解,小小數學題:

>f[1]=a
>f[2]=b
>f[3]=1b+a
>f[4]=2b+a
>f[5]=3b+2a
>f[6]=5b+3a

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <cstring>
 5 #include <string>
 6 using namespace
std; 7 int main() 8 { 9 int a,b,n,m,x,fibo[21]={0}; 10 scanf("%d%d%d%d",&a,&n,&m,&x); 11 fibo[0]=0;fibo[1]=1; 12 for(int i=2;i<=n;i++) 13 fibo[i]=fibo[i-1]+fibo[i-2]; 14 b=(m-(fibo[n-3]+1)*a)/(fibo[n-2]-1); 15 printf("%d",(fibo[x-1]-1)*b+(fibo[x-2]+1
)*a); 16 }

 


洛谷 P1011 車站