当前位置: 首页 > news >正文

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

题目描述

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

输入格式

一个整数 N N N

输出格式

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

输入输出样例

输入

123

输出

321

说明/提示

【数据范围】

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

方式-根据表达式计算

代码

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)
格式化为两位小数输出
结束

方式-记忆化递归

代码

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
格式化输出两位小数
结束
http://www.dtcms.com/a/112539.html

相关文章:

  • 迪杰斯特拉+二分+优先队列+拓扑+堆优化(奶牛航线Cowroute、架设电话线dd、路障Roadblocks、奶牛交通Traffic)
  • Leetcode 437 -- dfs | 前缀和
  • 大数据概念介绍
  • 高可用完全分布式集群启动命令
  • 基于 Java 的异步任务管理器的设计与实现方案
  • Currying柯里化
  • 【教程】Windows下 Xshell 连接跳板机和开发机
  • 基于PI控制和卡尔曼滤波的光通信相位偏差估计和补偿算法matlab仿真
  • 前端快速入门学习1——使用工具
  • [ISP 3A ] AE的常用算法分析
  • chown和chmod的区别
  • 使用内存数据库来为mapper层的接口编写单元测试
  • AI大模型时代前后端技术演进:MCP神经中枢架构下的技术栈抉择
  • Java项目之基于ssm的教务信息平台的设计与实现
  • 算法思想之双指针(一)
  • 深度学习处理文本(11)
  • Prolog语言的移动UI设计
  • COBOL语言的数据库交互
  • Pascal语言的设备管理
  • 【含文档+PPT+源码】基于SpringBoot+vue的疫苗接种系统的设计与实现
  • Scala学习总结③
  • JavaScript事件循环深度解析:从一道面试题看微任务与宏任务调度机制
  • 详细说明Qt 中共享内存方法: QSharedMemory 对象
  • 59.基于ssm和vue学生考试成绩管理系统
  • HTML快速上手
  • 如何在 GitHub 上开源一个小项目:从创建到长期维护的完整指南
  • 关键业务数据如何保持一致?主数据管理的最佳实践!
  • 出现次数超过一半的数(信息学奥赛一本通-1186)
  • 已经使用中的clickhouse更改数据目录
  • Haskell语言的区块链扩展性