[2018.10.11 T1] 鍛造
暫無連結
鍛造
題目背景
勇者雖然武力值很高,但在經歷了多次戰鬥後,發現怪物越來越難打,於是開始思考是不是自己平時鍛鍊沒到位,於是苦練一個月後發現……自己連一個史萊姆都打不過了。
勇者的精靈路由器告訴勇者其實是他自己的武器不好,並把他指引到了鍛造廠。
題目描述
“歡迎啊,老朋友。”
一陣寒暄過後,廠長帶他們參觀了廠子四周,並給他們講鍛造的流程。
“我們這裡的武器分成若干的等級,等級越高武器就越厲害,並且對每一等級的武器都有兩種屬性值
和
,但是我們初始只能花
個金幣來生產
把
級劍……”
“所以你們廠子怎麼這麼垃圾啊,不能一下子就造出來
級的武器嗎?”勇者不耐煩的打斷了廠長的話。
“彆著急,還沒開始講鍛造呢……那我們舉例你手中有一把
級武器和一把
級武器
,我們令鍛造附加值
,則
你有
的概率將兩把武器融合成一把
級的武器。”
“……但是,鍛造不是一帆風順的,你同樣有
的概率將兩把武器融合成一把
級的武器……”
勇者聽完後暗暗思忖,他知道廠長一定又想借此機會坑騙他的零花錢,於是求助這個村最聰明的智者——你,來告訴他,想要強化出一把
級的武器,其期望花費為多少?
由於勇者不精通高精度小數,所以你只需要將答案對
,一個質數 ) 取模即可。
格式
輸入格式
第一行兩個整數
,含義如題所示。
為了避免輸入量過大,第二行五個整數
,按照下列程式碼
來生成
和
陣列。
b[0]=by+1;c[0]=cy+1;
for(int i=1;i<n;i++){
b[i]=((long long)b[i-1]*bx+by)%p+1;
c[i]=((long long)c[i-1]*cx+cy)%p+1;
}
輸出格式
輸出一行一個整數,表示期望花費。
樣例
樣例 1 輸入
0 6432
4602677 3944535 2618884 6368297 9477531
樣例 1 輸出
6432
樣例 2 輸入
1 3639650
6136976 5520115 2835750 9072363 9302097
樣例 2 輸出
150643649
樣例 3 輸入
10 2
2 33 6 66 2333333
樣例 3 輸出
976750710
3
樣例 4 輸入
200 5708788
0 0 0 0 1
樣例 4 輸出
696441597
資料範圍
對於特殊性質處標示為“有”的資料滿足
。
對於
的資料,
題解
乍一看以為 的時候成功率 ,感覺 分穩了,然而定睛一看:特麼 怎麼算???
還是隻能老老實實推期望,先畫個圖:
設
為有了一把
級劍,要得到一把
級劍的期望花費,從
級升到
級的概率為
,根據上圖,可以列出方程組如下:
解得 ,算出 。
現在我們有了
分,考慮如何遞推下去,當我們融合一把
和
級的劍時,如果失敗了,會得到一把
的劍,所以對於一次融合操作,失敗時消耗的實際上是一把
級的劍,又因為我們的期望融合次數為
,最終可以得到鍛造一把
級劍的期望花費的遞推式: