这个要注意高精问题,因为当楼梯数过多时,产生的结果可能位数非常大,已经不适合正常的数据去存储了。
AC源码
#include<iostream>
#include<cstring>//调用 memset 库
using namespace std;
int n, ns = 1;
int a[5010], b[5010], c[5010];
//高精
void Add()
{
a[1] = 1, b[1] = 2;//注意初始化,f(n)=f(n-1)+f(n-2)所以初始的第一个和第二个需要单独算出,也不算麻烦。
for (int i = 3; i <= n; i++)//从第3个循环
{
for (int j = 1; j <= ns; j++)c[j] = a[j] + b[j];//相加
for (int j = 1; j <= ns; j++)//进位
{
if (c[j] > 9)//大于9才进
{
c[j + 1] += c[j] / 10;
c[j] %= 10;
if (j