【遞推】步步高昇
阿新 • • 發佈:2018-12-10
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;
} //就是這麼簡單