题目描述
给定一个整数 N N N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
输入格式
一个整数 N N N。
输出格式
一个整数,表示反转后的新数。
输入输出样例
输入
123
输出
321
说明/提示
【数据范围】
$-1,000,000,000\leq N\leq 1,000,000,000 $。
方式-根据表达式计算
代码
class Solution:@staticmethoddef oi_input():"""从标准输入读取数据"""num = int(input())return num@staticmethoddef oi_test():"""提供测试数据"""return 6@staticmethoddef solution(num):'''根据表达式计算值 大范围可能会有精度问题'''from math import sqrtsqrt5 = sqrt(5)left = (1 + sqrt5) / 2right = (1 - sqrt5) / 2fn = (left ** num - right ** num) / sqrt5print("{0:.2f}".format(fn))oi_input = Solution.oi_input
oi_test = Solution.oi_test
solution = Solution.solutionif __name__ == '__main__':num = oi_test()# num = oi_input()solution(num)
流程图
方式-记忆化递归
代码
class Solution:@staticmethoddef oi_input():"""从标准输入读取数据"""num = int(input())return num@staticmethoddef oi_test():"""提供测试数据"""return 6@staticmethoddef solution(num):'''记忆化递归'''from functools import lru_cache@lru_cache(maxsize=None) # 使用缓存装饰器,避免重复计算def fibonacci(num):if num == 0:return 0elif num == 1:return 1return 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.solutionif __name__ == '__main__':num = oi_test()# num = oi_input()solution(num)