鱼C论坛

 找回密码
 立即注册
查看: 3637|回复: 8

[已解决]梦想护卫舰 第11期 数楼梯

[复制链接]
发表于 2023-1-23 10:52:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zhangjinxuan 于 2023-1-24 14:09 编辑

上一关:双层汉诺塔
梦想护卫舰 第11期 数楼梯


你们根据野人所说的来到了神庙

神庙有一个长——长——的——楼梯,都有 n 层呢

不二看见了,惊讶的说道:
天哪,这么长的楼梯,要是每次只走一步或者两步,那有多少种走法啊?


所以……到底有多少种走法呢?你解决不二的疑惑嘛?

输入格式
一个整数 n,表示楼梯数量,1 <= n <= 1000

输出格式
一个整数,表示有多少走法

输入样例
5
输出样例
8

                               
登录/注册后可看大图


答案与解析
游客,如果您要查看本帖隐藏内容请回复


最佳战士
名字:tommyyu
奖励:最佳答案+5鱼币5荣誉


                               
登录/注册后可看大图


走过了楼梯,看见神庙的门需要密码……

To be continue……

下一关:破译密码
最佳答案
2023-1-23 10:59:30
本帖最后由 tommyyu 于 2023-1-23 11:08 编辑
x = {0:1, 1:1, 500:225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626, 501:365014740723634211012237077906479355996081581501455497852747829366800199361550174096573645929019489792751}
@__import__('functools').cache
def fib(n): return x[n] if n in x else fib(n-1)+fib(n-2)
print(fib(int(input())))

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-23 10:59:30 | 显示全部楼层    本楼为最佳答案   
本帖最后由 tommyyu 于 2023-1-23 11:08 编辑
x = {0:1, 1:1, 500:225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626, 501:365014740723634211012237077906479355996081581501455497852747829366800199361550174096573645929019489792751}
@__import__('functools').cache
def fib(n): return x[n] if n in x else fib(n-1)+fib(n-2)
print(fib(int(input())))

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zhangjinxuan + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-1-23 11:30:10 | 显示全部楼层
研究了一下,发现这不就是更改版斐波那契数列吗~

代码
n = int(input())
a = 0
b = 1
o = []
for i in range(n):
    a, b = b, a + b
    o.append(b)
print(o[-1])

评分

参与人数 1鱼币 +5 收起 理由
zhangjinxuan + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-1-23 17:52:44 | 显示全部楼层
本帖最后由 ba21 于 2023-1-23 17:59 编辑

答案和楼上不一样,理解错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-23 18:09:09 | 显示全部楼层

哈哈,简单题就喜欢玩花样对吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-23 18:18:19 | 显示全部楼层
效率还是个问题
优化了下代码:
from time import time
n=1000000
t1 =time()
f= [1, 2]
for i in range(2, n):
    f.append(f[0] + f[1])
    del f[0]
t2=time()
print(t2-t1)

评分

参与人数 1荣誉 +5 收起 理由
zhangjinxuan + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-24 10:04:05 | 显示全部楼层
ba21 发表于 2023-1-23 18:18
效率还是个问题
优化了下代码:

效率不是问题,因为楼梯最多有 n 层,所以时间复杂度就是 O n
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-2 13:23:12 | 显示全部楼层
ans[i]=ans[i-1]+ans[i-2];
特别地,
ans[0]=0,ans[1]=1;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-2 14:10:11 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 07:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表