1. 程式人生 > >【遞推】步步高昇

【遞推】步步高昇

Description

  春節的時候TENSHI去逛花市。她來到一個賣盆竹的攤位,看到一盆叫做“步步高昇”的盆竹。“步步高昇,步步高昇……”學習就是要一步一步來,不能急,要打好基礎。在穩固的基礎上才談得上步步高昇!TENSHI若有所思。她看到這盆東西好意頭,於是想買下。誰知一問價錢,“不貴不貴,才2XXRMB。”TENSHI差點沒昏倒,囊中羞澀嘛。但是TENSHI還是很想買下來,於是她就在一旁觀察。觀察了一段時間,她發現這個賣盆竹的人和別人殺價很有規律。設此人第i次報價為Wi元,那麼他第i+1次報的價格為Wi-A或Wi -B。到了最後,TENSHI以Z元成交,高高興興的回家去了。   求TENSHI把盆竹的價格由W1元殺到Z元的方法總數。

Input

第一行有兩個正整數W1和Z。第二行有兩個正整數A和B。它們滿足條件: 10 ≤ W1 ≤106,1 ≤ Z ≤ 106 ,Z < W1 2 ≤ A 、B ≤ 10000,A≠B

Output

方法總數 注意:結果不超過MAXLONGINT

Sample Input

樣例1 256 88 5 9 樣例2 100 10 13 23

Sample Output

樣例1 3889832 樣例2 0

思路: 遞推,從後往前推。

程式碼:

#include<iostream>
#include<cstdio>
using
namespace std; int n,m,t1,t2; long long a[1000005];//不要問我為什麼開那麼大... int main() { scanf("%d%d",&n,&m); scanf("%d%d",&t1,&t2);//兩種砍價 a[n]=1;//定義初始值 for(int i=n-min(t1,t2);i>=m;i--)//從後往前推 a[i]+=(a[i+t1]+a[i+t2]);//加上上一次未砍價的次數 cout<<a[m]<<endl;//輸出總次數 return
0; } //就是這麼簡單