文章目录
算法训练 区间k大数查询(python3)
问题描述
给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。
输入格式
第一行包含一个数n,表示序列长度。
第二行包含n个正整数,表示给定的序列。
第三个包含一个正整数m,表示询问个数。
接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。
输出格式
总共输出m行,每行一个数,表示询问的答案。
样例输入
5
1 2 3 4 5
2
1 5 2
2 3 2
样例输出
4
2
n = input()
s = list(map(int, input().split()))
m = int(input())
a = []
for i in range(m):
a.append(list(map(int,input().split())))
for temp in a:
l = int(temp[0]) - 1
r = int(temp[1])
k = int(temp[2]) - 1
s1 = sorted(s[l:r], reverse=True)
print(s1[k])
算法提高 二分法查找数组元素(python3)
问题描述
用递归函数实现二分法查找数组元素。
补充:要求给定数组采用如下代码定义
int data[200];
for (i=0; i<200; i++)
data[i]=4i+6;
输入格式
输入一个待查找的整数(该整数一定在数组data中)。
输出格式
该整数在数组中的指标。
样例输入
一个满足题目要求的输入范例。
例1:
262
例2:
438
例3:
774
样例输出
与上面的样例输入对应的输出。
例1:
64
例2:
108
例3:
192
数据规模和约定
输入数据中每一个数的范围。
输入数据必须满足4i+6,i=0,1,2,3,…,198,199。
num = int(input())
data = [x*4 + 6 for x in range(200)]
md = 100
left = 0
right = 200
while True:
md = int((left+right)/2)
if num == data[md]:
print(md)
break
elif num < data[md]:
right = md
else:
left = md
基础练习 回文数(python3)
问题描述
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
输出格式
按从小到大的顺序输出满足条件的四位十进制数。
思路1:
从1001到9999枚举,寻找符合要求的数字进行输出
思路2:
既然题目求回文,何不自己构建回文呐,四位,只需选取其中两位将其后边添加,使其变成回文。
for i in range(10,100):
temp = str(i)
temp = temp+temp[1]+temp[0]
print(int(temp))
基础练习 字母图形(python3)
问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。
正解
a,b = map(int,input().split())
lst = [chr(x) for x in range(ord('A'),ord('A')+26)]
s = ''.join(lst)
temp = s[0:b]
tem = ''
for i in range(a+1):
j=1
tem = temp
if i !=0:
while j != i:
tem = lst[j] + tem
j = j + 1
print(tem[0:b])
tem = ''
算法训练 猴子吃包子(python3水题)
问题描述
从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同;肉包每秒钟吃x个;韭菜包每秒钟吃y个;没有馅的包子每秒钟吃z个;现在有x1个肉包,y1个韭菜包,z1个没有馅的包子;问:猴子吃完这些包子要多久?结果保留p位小数。
输入格式
输入1行,包含7个整数,分别表示吃不同包子的速度和不同包子的个数和保留的位数。
输出格式
输出一行,包含1个实数,表示吃完所有包子的时间。
x,y,z,x1,y1,z1,p = map(int,input().split())
time = x1/x + y1/y + z1/z
print(round(time,p))
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100126.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...