火車上的人數
time limit: 1000 ms
memory limit: 32766 k
total submit: 166(66 users)
total accepted: 84(60 users)
rating:
special judge: no
description
火車從始發站(稱為第1站)開出,在始發站上車的人數為a,然後到達第2站,在第2站有人上、下車,但上、下車的人數相同,因此在第2站開出時(即在到達第3站之前)車上的人數保持為a人。
從第3站起(包括第3站)上、下車的人數有一定規律:上車的人數都是前兩站上車人數之和,而下車人數等於上一站上車人數,一直到終點站的前一站(第n-1站),都滿足此規律。
現給出的條件是:共有n個車站,始發站上車的人數為a,最後一站下車的人數是m(全部下車)。
試問x站開出時車上的人數是多少?
input
有多組測試資料。
每組測試資料僅包含一行,每行包括四個整數,a,n,m和x。
0<= a <= 10
3<= n <= 30
1 <= x < n
0 <= m <= 2^31-1
output
對於每組測試資料,輸出一行,包括乙個整數,即從x站開出時車上的人數。
sample input
5 7 32 4
sample output13
我們模擬手算,發現上車的人數和下車的人數都成一種f,f資料不一定的斐波那契數列,列舉出幾個樣例就不難發現。問題所在就是數學問題,求出第二次上車的人數是關鍵,因為資料比較小,所以我們這裡採用列舉它的模式來做題,
因為資料比較小,可以用暴力列舉的方法,其實這種題應該是放大資料,然後用矩陣快速冪啥的求斐波那契數,相對提公升難度~
#include#includeint main()
{ int a,n,m,x,i,y;
int on[31],off[31],ans[31];
while(~scanf("%d%d%d%d",&a,&n,&m,&x))
{y=1;
memset(ans,0,sizeof(ans));
on[1]=a;ans[1]=a;off[1]=0;
while(ans[n-1]<=m)
{on[2]=y;off[2]=y;ans[2]=a;
for(i=3;i
哈理工oj 1073 病毒
description 某種病毒襲擊了某地區,該地區有n 1 n 50000 人,分別編號為0,1,n 1,現在0號已被確診,所有0的直接朋友和間接朋友都要被隔離。例如 0與1是直接朋友,1與2是直接朋友,則0 2就是間接朋友,那麼0 1 2都須被隔離。現在,已查明有m 1 m 10000 個直接朋...
哈理工OJ 2179 深搜
組合 time limit 1000 ms memory limit 32768 k total submit 7 5 users total accepted 6 5 users rating special judge no description 給出乙個正整數n,從集合 中找出所有大小為k的...
哈理工OJ 1983 Math(字首和)
中文題意 讓你求出所有a i a j 的和是多少其中i j 思路分析 首先啊,你會發現各項的平方肯定在其中,我們先加上,然後呢,我們用qianzhui i 代表從第乙個數加到第i個數的和,我們會發現第i個數乘以後面所有的數肯定在結果中,這兩種情況的結果加起來就是所求的結果了。ac include i...