P1255 數樓梯
阿新 • • 發佈:2020-09-08
題目連結:P1255
解題思路:
倒推,最後上樓梯的方法數等於f(n) = f(n-1) + f(n-2),用遞推+高精
AC程式碼:
1 #include <iostream> 2 #define mx 1212 // 固定位數 3 using namespace std; 4 int a[5010][5010],f; 5 int main() 6 { 7 f = 0; 8 a[1][0] = 1; a[2][0] = 2; // 初始計算出前兩個 9 for(int i = 3; i < 5010; i++) // 離線計算 10 { 11 if(i == 5009) break; 12 for(int j = 0; j < mx; j++) // 高精度加法 13 { 14 a[i][j] += a[i-1][j]+a[i-2][j]; 15 if(a[i][j] >= 10) 16 { 17 a[i][j+1] = a[i][j+1]+a[i][j]/10; 18 a[i][j] %= 10; 19 } 20 } 21 } 22int n; 23 cin >> n; 24 if(n == 0) {cout << 0; return 0;} 25 for(int i = mx; i >= 0; i--) 26 { 27 if(a[n][i] == 0 && f == 0) continue; // 輸出除去前導零 28 else {cout << a[n][i]; f = 1;} 29 } 30 return 0; 31 }