2017 省赛选拨 想打架吗?算我一个!所有人,都过来!(3) 递推 斐波拉数列的应用...
想打架嗎?算我一個(gè)!所有人,都過來!(3)
Submit Page????Summary????Time Limit:?2 Sec?????Memory Limit:?128 Mb?????Submitted:?28?????Solved:?9????
Description
現(xiàn)在《爐石傳說》這款卡牌游戲已經(jīng)風(fēng)靡全球。2015年加入環(huán)境的“黑石山的火焰”擴(kuò)展帶來了一個(gè)新套牌的核心卡片“恐怖的奴隸主”,而這套統(tǒng)治游戲的套牌叫做“奴隸戰(zhàn)”。“恐怖的奴隸主”的登場(chǎng)音效“想打架嗎?算我一個(gè)!”一定在所有這個(gè)時(shí)代的《爐石傳說》玩家心里留下來難以磨滅的印象。
“恐怖的奴隸主”是一個(gè)有3點(diǎn)生命值的生物,當(dāng)其在場(chǎng)上受到非致命傷害時(shí)(如3點(diǎn)生命值的奴隸主受到1點(diǎn)或2點(diǎn)傷害時(shí),或者2點(diǎn)生命值的奴隸主受到1點(diǎn)傷害時(shí))會(huì)召喚一個(gè)新的3點(diǎn)生命值的“恐怖的奴隸主”,受到致命傷害(傷害大于等于現(xiàn)有生命值)時(shí)則會(huì)直接死去。另外一類卡片可以使全部生物造成1點(diǎn)傷害(降低1點(diǎn)生命),被稱為“旋風(fēng)斬效果”。因此“恐怖的奴隸主”,在場(chǎng)上經(jīng)過多次“旋風(fēng)斬效果”就可能由一個(gè)變成很多個(gè),同時(shí)發(fā)出那個(gè)令人恐懼的聲音“所有人,都過來!”。
另一方面,《爐石傳說》規(guī)定,場(chǎng)上最多存在7個(gè)生物,這極大地限制了“恐怖的奴隸主”“越生越多”。當(dāng)一次“旋風(fēng)斬效果”發(fā)生時(shí),優(yōu)先處理受到非致命傷害的“恐怖的奴隸主”,召喚新的“恐怖的奴隸主”,直到生物數(shù)量達(dá)到7個(gè)不再繼續(xù)召喚新的“恐怖的奴隸主”,然后清除掉生命值降為0或0以下的“恐怖奴隸主”。如場(chǎng)上有7個(gè)生命值為1的“恐怖的奴隸主”,則一次“旋風(fēng)斬效果”后場(chǎng)上有0個(gè)“恐怖的奴隸主”。又如,場(chǎng)上有6個(gè)生命值為3的“恐怖的奴隸主”,則一次“旋風(fēng)斬效果”后場(chǎng)上有6個(gè)2點(diǎn)生命的“恐怖的奴隸主”以及1個(gè)3點(diǎn)生命的“恐怖的奴隸主”。又如,場(chǎng)上有4個(gè)1點(diǎn)生命的“恐怖的奴隸主”以及2個(gè)2點(diǎn)生命的“恐怖的奴隸主”,則一次“旋風(fēng)斬效果”后場(chǎng)上有2個(gè)1點(diǎn)生命的“恐怖的奴隸主”以及1個(gè)3點(diǎn)生命的“恐怖的奴隸主”。
在本系列題目2中我們已經(jīng)知道了如何計(jì)算多個(gè)“恐怖的奴隸主”在經(jīng)歷n次旋風(fēng)斬效果后會(huì)剩下多少。現(xiàn)在游戲出現(xiàn)了bug,場(chǎng)上奴隸主的個(gè)數(shù)不再受到7個(gè)的上限限制了。場(chǎng)上剩下了一些1點(diǎn)生命,一些2點(diǎn)生命,一些3點(diǎn)生命的奴隸主,現(xiàn)在問這些奴隸主經(jīng)過n次旋風(fēng)斬效果,場(chǎng)面會(huì)變成什么樣子。
?
Input
有多組數(shù)據(jù)。
每組數(shù)據(jù)一行,hp1,hp2,hp3,n(0<=hp1,hp2,hp3<=10^9,0<=n<=10^6)
分別代表1點(diǎn)生命,2點(diǎn)生命,3點(diǎn)生命的奴隸主個(gè)數(shù),以及之后旋風(fēng)斬次數(shù)。
?
Output
每組用一行輸出最終總的奴隸主個(gè)數(shù)(結(jié)果對(duì)1000000007取模),格式見樣例。
?
Sample Input
1 1 1 3 3 3 3 2Sample Output
10 18#include <iostream> #include <cstring> #include <stdio.h> #include <stdlib.h> #include <algorithm> #define ll long long using namespace std; #define mod 1000000007 #define maxn 1000005 ll fab[maxn]; void init(){fab[0] = 1;fab[1] = 1;for(int i=2;i<N;i++){fab[i] = (fab[i-1]+fab[i-2])%mod;} } int main() {init();LL a,b,c;int k;while(scanf("%lld%lld%lld%d",&a,&b,&c,&k)!=EOF){LL ans1 = fab[k-1]*b%mod;LL ans2 = fab[k]*c%mod;printf("%lld\n",((ans1+ans2)*2)%mod);}return 0; }
?
轉(zhuǎn)載于:https://www.cnblogs.com/l609929321/p/7274113.html
總結(jié)
以上是生活随笔為你收集整理的2017 省赛选拨 想打架吗?算我一个!所有人,都过来!(3) 递推 斐波拉数列的应用...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Leetcode][第315题][JA
- 下一篇: 中职学校计算机课听课记录表,中职语文听课