Micokery九九 2022-12-22 11:35 采纳率: 91.7%
浏览 27
已结题

请问用什么方法能进一步提高运行速度

img

img

请问我编写如下的两个程序怎样提高运行速度


def fibonacci(n):
    a, b = 1, 1
    for i in range(n):
        yield pow(a, 2)
        a, b = b, a + b


num = int(input())
result = list(fibonacci(num))
print(sum(result) % 1000000007)

while True:
    try:
        a = 0
        b = 0
        c = 0
        d = 0
        mod = 1e9 + 7
        str1 = input()
        for i in range(len(str1)):
            if str1[i] == '2':
                a += 1
            if str1[i] == '0':
                b = (b + a) % mod
            if str1[i] == '1':
                c = (c + b) % mod
            if str1[i] == '9':
                d = (d + c) % mod
        print(int(d))
    except EOFError:
        break
  • 写回答

3条回答 默认 最新

  • ShowMeAI 2022-12-22 11:41
    关注

    望采纳

    优化fibonacci函数,由于每次调用pow函数都会带来较大的计算量,因此可以考虑使用快速幂算法来替代pow函数,以提高计算效率。

    可以使用缓存来存储已计算过的斐波那契数列值,以避免重复计算:

    def fibonacci(n):
        a, b = 1, 1
        cache = {}
        for i in range(n):
            if i in cache:
                a, b = b, cache[i]
            else:
                cache[i] = a**2
                a, b = b, a + b
            yield a**2
    

    第2个程序可以使用缓存来存储已计算过的结果,以避免重复计算。

    def count_chars(s):
        char_count = {'2': 0, '0': 0, '1': 0, '9': 0}
        for c in s:
            char_count[c] += 1
        return char_count
    
    cache = {}
    
    while True:
        try:
            s = input()
            if s in cache:
                print(cache[s])
                continue
            char_count = count_chars(s)
            a, b, c, d = char_count['2'], char_count['0'], char_count['1'], char_count['9']
            mod = 1e9 + 7
            c = (c + b) % mod
            d = (d + c) % mod
            cache[s] = d
            print(int(d))
        except EOFError:
            break
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月3日
  • 已采纳回答 2月3日
  • 创建了问题 12月22日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c