python基础练习 VIP试题17道之回形取数、龟兔赛跑预测、芯片测试、FJ字符串、Sine之舞

本文主要是介绍python基础练习 VIP试题17道之回形取数、龟兔赛跑预测、芯片测试、FJ字符串、Sine之舞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、回形取数

题目描述

回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。

输入描述

输入第一行是两个不超过 200 的正整数  m,n,表示矩阵的行和列。接下来 m 行每行 n 个整数,表示这个矩阵。

输出描述

输出只有一行,共 mn 个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。

输入

3 3
1 2 3
4 5 6
7 8 9

输出

1 4 7 8 9 6 3 2 5

解法:

m,n=map(int,input().split(' '))
num=[list(map(int,input().split(' '))) for i in range(m)]
a=[]
def huixing(k,m,n,num):for i in range(k, m - k):  # 向下搜寻a.append(num[i][k])for i in range(k+1,n-k):# 向右搜寻a.append(num[m - 1-k][i])for i in range(m - 2 - k, k-1, -1):  # 向上搜寻 左闭右开 所以减二a.append(num[i][n-1-k])for i in range(n-2-k,k,-1):a.append(num[k][i])if m>n:#计算转k圈k=int(n/2+0.5)min=n
else:k=int(m/2+0.5)min=m
for o in range(k):if o==k-1 and (min+1)%2==0:if m<n:#行少列队,向右横向输出for i in range(o,n-o):a.append(num[o][i])# print(num[o][i],end=' ')else:#行多列少,向下输出for i in range(o,m-o):a.append(num[i][o])# print(num[i][o],end='')else:huixing(o,m,n,num)
#打印输出
for i in range(len(a)):print(a[i],end=' ')

二、龟兔赛跑预测

问题描述

  话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。
  然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速度v1(表示每秒兔子能跑v1米),乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。但是小华很懒,不想通过手工计算推测出比赛的结果,于是他找到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。

输入格式

  输入只有一行,包含用空格隔开的五个正整数v1,v2,t,s,l,其中(v1,v2<=100;t<=300;s<=10;l<=10000且为v1,v2的公倍数)

输出格式

  输出包含两行,第一行输出比赛结果——一个大写字母“T”或“R”或“D”,分别表示乌龟获胜,兔子获胜,或者两者同时到达终点。
  第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。

样例输入

       10 5 5 2 20

样例输出

        D
        4

样例输入

       10 5 5 1 20

样例输出

       R
       3

样例输入

       10 5 5 3 20

样例输出

       T
       4

解法一:求速度差值

v1,v2,t,s,l=map(int,input().split(' '))
#计算兔子每t0秒领先t米
t0=t/(v1-v2)
#兔子总用时t1
l0=t0*v1
if l0>l:#兔子不用休息t1=l/v1
else:if l%l0==0:t1=l/v1+(l/v1-1)*selse:t1=l/v1+(l/v1)*s
#乌龟总用时t2
t2=l/v2
if t1>t2:print('T')print(int(t2))
elif t1<t2:print('R')print(int(t1))
else:print('D')print(int(t1))

解法二:蛮力法(题目中说输出秒数为正整数,按秒分别计算兔子、乌龟已跑路程)

v1,v2,t,s,l=map(int,input().split(' '))
time=1
# 对兔子来说
sr = v1
# 对乌龟来说
st = v2
while sr<l and st<l:if sr - st >= t:if st + v2 < l:  # 在兔子休息时,乌龟没跑完st += v2 * stime = time + selse:  # 在兔子休息时,乌龟跑完了st += v2time += timeelse:sr += v1st += v2time += 1
if sr==l and st==l:print('D')
elif sr==l and st!=l:print('R')
elif sr!=l and st==l:print('T')
print(time)

三、芯片测试

题目描述

有n(2≤n≤20)块芯片,有好有坏,已知

①好芯片比坏芯片多。每个芯片都能用来测试其他芯片。

②用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。
给出所有芯片的测试结果,问哪些芯片是好芯片。

输入

输入数据第一行为一个整数n,表示芯片个数。
第二行到第n+1行为n*n的一张表,每行n个数据。表中的每个数据为0或1,在这n行中的第i行第j列(1≤i, j≤n)的数据表示用第i块芯片测试第j块芯片时得到的测试结果,1表示好,0表示坏,i=j时一律为1(并不表示该芯片对本身的测试结果。芯片不能对本 身进行测试)。

输出

按从小到大的顺序输出所有好芯片的编号

样例输入

3
1 0 1
0 1 0
1 0 1

样例输出

1 3

解法:好芯片比坏芯片多,且测好芯片为1,测坏芯片为0或1,故哪个被测芯片的1多于总芯片数的一半,它就是好的。

n=int(input())
num=[list(map(int,input().split(' ')))for i in range(n)]#创建一个n*n的二维数组
a=[]
#有题知第j块为被测芯片,按列遍历即可
for j in range(n):k = 0  # 用来记录1的个数for i in range(n):if num[i][j]==1:k+=1if k>n/2:a.append(j+1)
for i in range(len(a)):print(a[i],end=' ')

四、FJ字符串

题目描述

FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?

输入

仅有一个数:N ≤ 26。

输出

请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。

样例输入

3

样例输出

ABACABA

解答一:用键值,规律发现Ai=A(i-1)+i对应的字符+A(i-1)

N=int(input())
#用键值
a={1:"A",2:"B",3:"C",4:"D",5:"E",6:"F",7:"G",8:"H",9:"I",10:"J",11:"K",12:"L",13:"M",14:"N",15:"O",16:"P",17:"Q",18:"R",19:"S",20:"T",21:"U",22:"V",23:"W",24:"X",25:"Y",26:"Z"}
b=[a[1]]
if N==1:print(b[0])
else:for i in range(2,N+1):last=b[-1]str_combined=last+a[i]+lastb.append(str_combined)print(b[N-1])

解答二:把‘A’用ord转为ASCII,再用chr转为字符串,递归

N=int(input())
def str_combine(N):if N==1:return 'A'else:return str_combine(N-1)+chr(ord('A')+N-1)+str_combine(N-1)
print(str_combine(N))

五、Sine之舞

题目描述

最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。
不妨设
An=sin(1–sin(2+sin(3–sin(4+…sin(n))…)
Sn=(…(A1+n)A2+n-1)A3+…+2)An+1
FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。

输入

仅有一个数:N<201。

输出

请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。

样例输入

3

样例输出

((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1

解法:递归

对An来说,比A(n-1)右边多了(-1)^(n-1)sin(n,外加n个右括号')'

对Sn来说,n-1个左括号和Ai+(n-i+1)+')'的i从1到n循环,最后一次不加')'

N=int(input())
def qu_An(n):#求解Anif n==1:return('sin'+'('+str(1))else:if n%2==0:#偶数-return (str(qu_An(n-1))+'-'+'sin'+'('+str(n))else:#奇数+return (str(qu_An(n-1))+'+'+'sin'+'('+str(n))
# print(qu_An(N))
def qu_Sn(n):#求解SnA=[]B=[]for i in range(1,n+1):#存储AnA.append(qu_An(i)+')'*i)# print(A)if n==1:print(A[0]+'+'+str(1))return A[0]+'+'+str(1)else:B.append(str(A[0])+'+'+str(n)+')')for i in range(1,n-1):B.append(B[-1]+str(A[i])+'+'+str(n-i)+')')B.append(B[-1]+str(A[n-1])+'+'+str(1))#最后一次没右括号,单独存return ('(' * (n - 1) +B[-1])print(qu_Sn(N))

这篇关于python基础练习 VIP试题17道之回形取数、龟兔赛跑预测、芯片测试、FJ字符串、Sine之舞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816765

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学