哎,昨天好怠惰只想玩……結果對著一道高精度看了半天覺得自己還是算了吧hhh
今天起來就沒有看那道高精度……雖然知道基本思想是什麼但是不會寫……於是寫了一道水題,基本就是找規律+遞迴,沒什麼技術難度(廢話有技術難度的題目並不會寫==)
題目描述輸入輸出樣例火車從始發站(稱為第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
怎麼說呢第一眼看上去,既然有「前兩站之和」那麼就是說有斐波那契的影子。這一題好的地方在於它下車的人數等於上一次上車的人數。那麼也就是說:
本次車上增加的人數=(n-1站上車)+(n-2站上車)-(n-1站上車)=(n-2站上車)
於是我們用題中的資料列乙個表
(m=32,a=5)人數1
2345
67上車5
p5+p
5+2p
10+3p
15+5p0下車
0pp5+p
5+2p
10+3p0車上
051010+p
15+2p
20+4p32δ
055pp2p
於是就很好懂了,也就是: δ=
n−2站
上車的人
數 我們在這裡再考慮進第一次上車的人,因為之後增加的人不是以第一次上車的人數p來作為基準。第二次上車時上車的人數是第一次加上第二次,也就是a+p。如果我們把上車下車的人分成第一次上車人數a以及p兩部分來求,我們很容易發現乙個規律,那就是: δ=
a+co
nsta
nt∗f
ibo(
) 由於a是常數增長的,
也就意味著: δ=
fibo
(n−2
)∗ca
nsta
nt+a
如果我們累加一下,那這題就是乙個簡單的fibonacci數列求和之後解方程組。由於f這種fibonacci 增長從第三站開始(第二次下車後)所以到第四站的時候車上人數才開始滿足這種規律。
於是由題意得在第x站的人數為: a∗
(x−2
)+fi
bosu
m(n−
3)到倒數第二站就有 m=
a∗(n
−3)+
fibo
sum(
n−4)
p 於是就懟出來了。
///
//////
//////
//////
//////
///////
////by frostwing98
/////
//////
//////
//////
//////
///////
#include
#define max 20
using namespace std;
long fibo(int n)
long fibosum(int n)
return sum;
}int main(void)
if (x <= 3)
cout << a*(x - 1);
else
return
0;}
洛谷 P1011 車站 (暴力)
題目鏈結 火車從始發站 稱為第 1 站 開出,在始發站上車的人數為 a 然後到達第 2 站,在第 2 站有人上 下車,但上 下車的人數相同,因此在第 2 站開出時 即在到達第 3 站之前 車上的人數保持為 a 人。從第 3 站起 包括第 3 站 上 下車的人數有一定規律 上車的人數都是前兩站上車人數...
洛谷 P1011 車站 題解
傳送門 ros最近開始做水題了 可能是前段時間做數論題做到推導遞推式子的題做多了所以一上來做這題就推導式子然後寫完 發現樣例沒過。這是怎麼回事?後來ros發現問題出在兩個數字都是符合斐波那契數列關係的,而ros一開始推導式子的時候以為其中乙個量是符合線性關係的所以出現了問題。好的現在bug都解決了開...
刷題報告004 洛谷P1007獨木橋
嗨呀真是懈怠,看到題目之後實力摸魚,看了一下討論發現呀好簡單orz 題目背景 戰爭已經進入到緊要時間。你是運輸小隊長,正在率領運輸部隊向前線運送物資。運輸任務像做題一樣的無聊。你希望找些刺激,於是命令你的士兵們到前方的一座獨木橋上欣賞風景,而你留在橋下欣賞士兵們。士兵們十分憤怒,因為這座獨木橋十分狹...