洛谷習題 P1255 數樓梯

2021-10-07 19:42:07 字數 1379 閱讀 4864

樓梯有n階,上樓可以一步上一階,也可以一步上二階。

編乙個程式,計算共有多少種不同的走法。

輸入格式

乙個數字,樓梯數。

輸出格式

走的方式幾種。

輸入樣例

輸出樣例

說明/提示

60% n<=50

100% n<=5000)

根據題意會發現,到每階樓梯的走法數量和斐波那契數列很相像,都是f[i] = f[i-2]+f[i-1],但基準情況有點不同,先總結出該題公式

於是完全按公式寫出乙個解法

#include

using

namespace std;

unsigned

long

long f[

5005];

//儲存走到第i階樓梯有多少種走法的餘數

intmain()

但這個解法顯然是會溢位的,即使是unsigned long long也不可能裝下f(5000),這時可以考慮用陣列來儲存單個值,自己模擬乙個高精度的加法。**如下

#include

#include

using

namespace std;

char f[

5005][

2000];

//儲存走到第i階樓梯有多少種走法的餘數

inline

void

bigadd

(char

*ret,

const

char

*f1,

const

char

*f2)

else}}

intmain()

上面用的是字元陣列儲存數值,也可以直接使用整型陣列來儲存,更加方便計算,同時在計算方面,可以直接遍歷兩數每位,儲存相加的值先不進製,然後再第二遍遍歷時來處理進製,最後依然是倒序輸出。附上該題第一位題解的**,該**原位址。

#include

#include

#include

#include

using

namespace std;

int n,len=

1,f[

5003][

5003];

//f[k][i]--第k階台階所對應的走法數

voidhp(

int k)

//高精度加法,k來存階數

}int

main()

洛谷 P1255 數樓梯

樓梯有 nn 階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。乙個數字,樓梯數。輸出走的方式總數。輸入 1複製 4輸出 1複製 5分析 說實話這題我真的快寫吐了,剛拿到的時候,開心的一批,遞推第一篇第一題,這麼水的嗎,不禁想起當年初次接觸acm,室友從cf上選了幾道題...

洛谷 P1255 數樓梯

樓梯有n階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。輸入格式 乙個數字,樓梯數。輸出格式 走的方式幾種。輸入樣例 1 複製 4 輸出樣例 1 複製 5 用遞迴會太慢,需用遞推 60 n 50 100 n 5000 思路 數學 高精 include include ...

洛谷 P1255 數樓梯

題目鏈結 非常典型的 斐波那契 高精度 淺幫舍友做個題。不喜歡高精!對於60 的資料,n 50 對於100 的資料,1 n 5000 提交了一遍60分.用二維陣列dp x i x表示第幾步台階,i和位數相關。將走法的位數拆開分別存放在此行的每一列 從1到len 此行的某一列 上一行的某一列 上上行的...