python-SZ斐波那契数列/更相减损数

news/2024/9/21 21:43:30 标签: python, 算法, 数据结构

一:SZ斐波那契数列
题目描述
你应该很熟悉斐波那契数列,不是吗?现在小理不知在哪里搞了个山寨版斐波拉契数列,如下公式:
F(n)=
{
$\ \ \ \ \ \ \ \ \ \ \ \ $ a,( n=1)
$\ \ \ \ \ \ \ \ \ \ \ \ $ b,( n=2)
$\ \ \ \ \ \ \ \ \ \ \ \ $ F(n−1)+F(n−2),(n>2并且n是奇数)
$\ \ \ \ \ \ \ \ \ \ \ \ $ F(n−1)+F(n−2)+F(n−3)(n>2并且n是偶数)
}
这里 a 和 b 是定值,现给出 a,b 和 n,你的任务是计算 F(n)。
输入格式
输入共 T+1 行。
第一行有一个正整数 T,表示测试实例的个数。
接下来 TT行,每行一个测试实例,每个测试实例包括三个正整数 a,b 和 n。
输出格式
对于每个测试实例,输出一行包含一个正整数 F(n)。
样例输入输出
样例输入

2
1 2 3
1 3 6
样例输出
3
24
数据范围
对于 100% 的数据,保证T≤10,a,b≤10,n≤30。
来源/分类(难度系数:二星
模拟 


完整代码展示:
def F(a,b,n):
       list_1=[a,b,a+b]
       begin=3
       while begin<n+1:
              if (begin+1)%2==0:                                               list_1.append(list_1[-1]+list_1[-2]+list_1[-3])
              elif (begin+1)%2==1:
                   list_1.append(list_1[-1]+list_1[-2])
              begin+=1
         return list_1[n-1]
m=int(input())
list_2=[]
for i in range(m):
      list_3=list(map(int,input().split()))
      list_2.append(list_3)
for i in range(0,len(list_2)):
      print(F(list_2[i][0],list_2[i][1],list_2[i][2]))

python">def F(a,b,n):
    list_1=[a,b,a+b]
    begin=3
    while begin<n+1:
        if (begin+1)%2==0:
            list_1.append(list_1[-1]+list_1[-2]+list_1[-3])
        elif (begin+1)%2==1:
            list_1.append(list_1[-1]+list_1[-2])
        begin+=1
    return list_1[n-1]
m=int(input())
list_2=[]
for i in range(m):
    list_3=list(map(int,input().split()))
    list_2.append(list_3)
for i in range(0,len(list_2)):
    print(F(list_2[i][0],list_2[i][1],list_2[i][2]))


代码解释:
“def F(a,b,n):
        list_1=[a,b,a+b]
        begin=3
        while begin<n+1:
               if (begin+1)%2==0:
         list_1.append(list_1[-1]+list_1[-2]+list_1[-3])
               elif (begin+1)%2==1:
                    list_1.append(list_1[-1]+list_1[-2])
               begin+=1
        return list_1[n-1]                                           ”,按照题意自定义一个函数F(),传递三个形参a,b,n,即斐波那契函数的第1项a,2项b和所求项n。(建立一个空列表list_1,将a,b,a+b分别作为list_1的第1,2,3项。令begin为循环密码子,当begin<n+1时:如果begin+1能被2整除,则将list_1后三项和添加进list_1末尾,否则将list_1后两项添加进list_1末尾。每循环一次,begin+1,直至begin==n+1,跳出整个while循环,最终返回list_1的末尾元素值)。
“m=int(input()) ”,导入用户输入的测试实例的个数m。
“list_2=[]
 for i in range(m):
       list_3=list(map(int,input().split()))
       list_2.append(list_3)                      ”,建立一个空列表list_2,循环m次:导入用户输入的a,b,n,并将其储存在列表list_3中,接着将list_3添加进list_2中。
“for i in range(0,len(list_2)):
       print(F(list_2[i][0],list_2[i][1],list_2[i][2])) ”,遍历list_2中的元素,将list_2[i][0]~list_2[i][2]作为实参传递进F()函数,并打印F()函数返回值。


运行效果展示:

a95024b579964f93b6816f27ede8e5b9.jpg

04380ed47b58467980e686c92e0df9cb.jpg 

 

 

 

 

二:更相减损数:
题目描述
利用更相减损术求两个整数的最大公约数,即每次将较大的数变成大数减去小数的值。
输入格式
输入两个正整数 m , n 。
输出格式
输出一个整数。
样例输入输出
样例输入

4 6
样例输出
2
数据范围
对于 100% 的数据,保证 1≤m,n≤106 。
来源/分类(难度系数:二星
递归 最大公约数 数学 


完整代码展示:

x,y=map(int,input().split())
if x > y:
     x,y=y,x
for fac in range(x,0,-1):
      if x % fac == 0 and y % fac == 0 :
           print('{}'.format(fac))
           break

python">x,y=map(int,input().split())
if x > y:
    x,y=y,x
for fac in range(x,0,-1):
    if x % fac == 0 and y % fac == 0 :
        print('{}'.format(fac))
        break


代码解释:
“x,y=map(int,input().split())
 if x > y:
      x,y=y,x                             ”,导入用户输入的两个正整数x,y,并判断x,y的·大小关系:如果x,y,则将x,y交换值(即保证x为x,y中最小值)。
“for fac in range(x,0,-1):
        if x % fac == 0 and y % fac == 0 :
             print('{}'.format(fac))
             break                                         ”,依次遍历x~1的所有数fac,并判断x,y是否同时能被fac整除,如果是:则打印fac,终止循环。


运行效果展示:

24bc38b3781e45819c459c21d1e592a7.jpg

 7937fe8bc6f04b45bede570b015a06ca.jpg

               (声明:以上内容均为原创) 

 

 


http://www.niftyadmin.cn/n/5669494.html

相关文章

老程序员的数字游戏开发笔记(二) —— 直接开始一个Godot项目

目录 本篇简述 一个最简单的Godot项目 创建一个新项目 创建一个 Sprite2D 节点 创建Gd脚本-GDScript 添加打印 运行项目 加个旋转 让它前进 监听输入 查看帮助 再添加按“上”键时移动 总结 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收…

【linux】快速列出 systemctl 特定名的服务

在 Linux 系统管理中,我们经常需要查看和管理各种系统服务。systemd 是最新的 Linux 系统和服务管理器,它提供了一个强大的命令行工具 systemctl 来管理系统服务。今天,我们就来聊聊如何使用 systemctl 配合 grep 命令来快速查找指定名称的服务。 systemctl -a | grep name这个…

RabbitMQ 高级特性——发送方确认

文章目录 前言发送方确认confirm 确认模式return 退回模式 常见面试题 前言 前面我们学习了 RabbitMQ 中交换机、队列和消息的持久化&#xff0c;这样能够保证存储在 RabbitMQ Broker 中的交换机和队列中的消息实现持久化&#xff0c;就算 RabbitMQ 服务发生了重启或者是宕机&…

Java 每日一刊(第13期):this super static

“优秀的代码不仅仅是给机器看的&#xff0c;更是给人看的。” 前言 这里是分享 Java 相关内容的专刊&#xff0c;每日一更。 本期将为大家带来以下内容&#xff1a; this 关键字super 关键字static 关键字 this 关键字 this 关键字是 Java 中最常见的关键字之一&#xf…

智谱AI:CogVideoX-2b——视频生成模型的得力工具

智谱AI&#xff1a;CogVideoX-2b——视频生成模型的得力工具 文章目录 CogVideoX 简介——它是什么&#xff1f;CogVideoX 具体部署与实践指南一、创建丹摩实例二、配置环境和依赖三、上传模型与配置文件四、开始运行五、Web UI 演示 CogVideoX 简介——它是什么&#xff1f; …

JetsonNano、Ubuntu开机自启动脚本编写(一遍过)

本文章的开机自启动脚本结合.service文件和gnome工具来实现。 需要实现的功能大概是&#xff1a;初始化&#xff08;给端口权限&#xff09;板卡与下位机&#xff08;STM32&#xff09;相连的串口&#xff0c;然后运行相关的python代码。 参考文章&#xff1a; Jetson nano开机…

DHCP协议原理(网络协议)

DHCP简介 定义 DHCP&#xff08;动态主机配置协议&#xff09;是一种网络管理协议&#xff0c;能够自动为局域网中的每台计算机分配IP地址及其他网络配置参数&#xff0c;包括子网掩码、默认网关和DNS服务器等。这一机制极大简化了网络管理&#xff0c;尤其在大型局域网中&am…

typescript控制语句

TypeScript 条件语句、循环语句与函数学习心得 一、条件语句 条件语句是控制程序执行路径的核心工具&#xff0c;它让程序根据不同的条件执行不同的代码。TypeScript 中常用的条件语句包括 if、if...else、if...else if...else 和 switch。 1. if 语句 if 语句用于在条件为…