洛谷-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;
}
posted @ 2020-12-10 10:59  yuzec  阅读(267)  评论(0编辑  收藏  举报