走台阶(高精度)

楼梯有 NN 阶,上楼可以一步上一阶,也可以一步上二阶。

编一个程序,计算共有多少种不同的走法。

输入格式
一个数字,楼梯数。

输出格式
输出走的方式总数。

输入输出样例
输入 #1复制
4
输出 #1复制
5
说明/提示
对于60%的数据,N≤50;
对于100%的数据,N≤5000。

对于这道题如果用long long型的数据类型测试点并不能全部通过,所以要模拟加法的过程,用数组存储每一位数字。

#include<bits/stdc++.h>
using namespace std; 

int main()
{
	int a[5555],b[5555],c[5555],n,len=1;
	cin>>n;
	a[1]=1,b[1]=2;
	if(n<3)
	{
		cout<<n;
		return 0;
	}
	for(int i=3;i<=n;i++)
	{
		for(int j=1;j<=len;j++)
		c[j]=a[j]+b[j];
		for(int k=1;k<=len;k++)
		{
			if(c[k]>=10)
			{
				c[k+1]=c[k+1]+c[k]/10;
				c[k]=c[k]%10;
				if(k==len)
				len++;
			}
		}
		for(int i=1;i<=len;i++)
		{
			a[i]=b[i];
			b[i]=c[i];
		}
		
	}
	for(int i=len;i>0;i--)
	{
		cout<<b[i];
	}
	return 0;
} 

版权声明:本文为weixin_47511190原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。