洛谷题单3-P1720 月落乌啼算钱(斐波那契数列)-python-流程图重构

题目描述

给定一个整数 N N N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。

输入格式

一个整数 N N N。

输出格式

一个整数,表示反转后的新数。

输入输出样例

输入

复制代码
123

输出

复制代码
321

说明/提示

【数据范围】

-1,000,000,000\\leq N\\leq 1,000,000,000 。

方式-根据表达式计算

代码

python 复制代码
class Solution:
    @staticmethod
    def oi_input():
        """从标准输入读取数据"""
        num = int(input())
        return num

    @staticmethod
    def oi_test():
        """提供测试数据"""
        return 6

    @staticmethod
    def solution(num):
        '''根据表达式计算值 大范围可能会有精度问题'''
        from math import sqrt

        sqrt5 = sqrt(5)
        left = (1 + sqrt5) / 2
        right = (1 - sqrt5) / 2
        fn = (left ** num - right ** num) / sqrt5
        print("{0:.2f}".format(fn))


oi_input = Solution.oi_input
oi_test = Solution.oi_test
solution = Solution.solution

if __name__ == '__main__':
    num = oi_test()
    # num = oi_input()
    solution(num)

流程图

开始 读取输入num 计算sqrt(5), 黄金分割比例 计算左项 (1+√5)/2 的num次方 计算右项 (1-√5)/2 的num次方 (左项 - 右项)/sqrt(5) 格式化为两位小数输出 结束

方式-记忆化递归

代码

python 复制代码
class Solution:
    @staticmethod
    def oi_input():
        """从标准输入读取数据"""
        num = int(input())
        return num

    @staticmethod
    def oi_test():
        """提供测试数据"""
        return 6

    @staticmethod
    def solution(num):
        '''记忆化递归'''
        from functools import lru_cache

        @lru_cache(maxsize=None)  # 使用缓存装饰器,避免重复计算
        def fibonacci(num):
            if num == 0:
                return 0
            elif num == 1:
                return 1
            return fibonacci(num - 1) + fibonacci(num - 2)

        result = fibonacci(num)
        print("{0:.2f}".format(result))


oi_input = Solution.oi_input
oi_test = Solution.oi_test
solution = Solution.solution

if __name__ == '__main__':
    num = oi_test()
    # num = oi_input()
    solution(num)

流程图

是 否 是 否 开始 输入num num是否为0? result = 0 num是否为1? result = 1 初始化a=0, b=1 循环2到num a, b = b, a+b 更新后b的值 循环结束 result = b 格式化输出两位小数 结束

相关推荐
蹊黎2 小时前
C++中vector类的部分简单实现
开发语言·c++·visual studio
强哥聊算力5 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
程序猿追8 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓8 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播8 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
Navigator_Z9 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode
CCblandy9 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
墨云安全9 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
mmmmath_39 小时前
LeetCode.104.二叉树的最大深度
数据结构·leetcode
摇滚侠10 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记