当前位置:首页 >> 核电技术聚变聚能设备 >> 【qduoj】【超级楼梯进阶版】,暴风影音事件

【qduoj】【超级楼梯进阶版】,暴风影音事件

cpugpu芯片开发光刻机 核电技术聚变聚能设备 2
文件名:【qduoj】【超级楼梯进阶版】,暴风影音事件 【qduoj】【超级楼梯进阶版】

题干:

描述

 

N级阶梯,人可以一步走一级,也可以一步走两级,求人从阶梯底端走到顶端可以有多少种不同的走法。

输入

 

一个整数n,代表台阶的阶数。

输出

 

求人从阶梯底端走到顶端可以有多少种不同的走法,输出结果的格式为大整数.

输入样例 1 

1

输出样例 1

1

输入样例 2 

2

输出样例 2

2

输入样例 3 

4

输出样例 3

5

解题报告:

      超级楼梯这题一般都是n<40,这样在longlong范围内就可以递推出来,但是这题没给数据范围,只说整数n,并且说了输出格式为大整数,所以这题需要搞一发高精度。

AC代码:

#include<bits/stdc++.h>#define ll long longusing namespace std;char f[5005][10005];int wei[50005];int f1[1000005];int f2[1000005];ll n;void add(ll x,ll y) {int p = max(wei[y],wei[x]);for(int i = 0; i<p; i++) {f[x][i] = ( f[x][i] + f[y][i] ) ;f[x][i+1] += f[x][i] / 10;f[x][i] %= 10;}while(f[x][p] != 0) {f[x][p+1]+=f[x][p]/10;f[x][p]%=10;p++;}wei[x]=p;}int main(){ll n;while(~scanf("%lld",&n)) {memset(f,0,sizeof f);f[1][0] = 1;f[2][0] = 2;wei[1]=wei[2]=1;for(ll i = 3; i<=n; i++) {add(i,i-1);add(i,i-2);}for(int i = wei[n]-1; i>=0; i--) {printf("%1d",f[n][i]);}printf("\n");}return 0;}

 

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接