洛谷-P1255 数楼梯
洛谷-P1255 数楼梯
原题链接:
题目描述
楼梯有 \(N\) 阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。
输入格式
一个数字,楼梯数。
输出格式
输出走的方式总数。
输入输出样例
输入 #1
4
输出 #1
5
说明/提示
- 对于 \(60\%\) 的数据,\(N \leq 50\);
- 对于 \(100\%\) 的数据,\(N \leq 5000\)。
C++代码
#include <iostream>
#include <cstring>
using namespace std;
string add(string x, string y) {
int lenx = x.size();
int leny = y.size();
if (lenx > leny)
for (int i=0; i<lenx-leny; ++i)
y = '0' + y;
else
for (int i=0; i<leny-lenx; ++i)
x = '0' + x;
int jw = 0;
for (int i=max(lenx, leny)-1; i>=0; --i) {
x[i] += (y[i] - '0') +jw;
jw = (x[i] - '0') / 10;
x[i] = (x[i] - '0') % 10 + '0';
}
if (jw != 0)
x = char(jw + '0') + x;
return x;
}
int main() {
int n;
cin >> n;
string a[n+1]={"1", "1"};
for (int i=2; i<=n; ++i)
a[i] = add(a[i-1], a[i-2]);
a[0] = "0";
cout << a[n] << endl;
return 0;
}