PTA-python 一行题解合集

1,求最大值及其下标

本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。

输入格式:

输入在第一行中给出一个正整数n(1

输出格式:

在一行中输出最大值及最大值的最小下标,中间用一个空格分开。

输入样例:

6
2 8 10 1 9 10

输出样例:

10 2

题解:

input();print(str(max([(i[1],i[0]) for i in enumerate(list(map(int,input().split())))], key=lambda x:x[0])).replace('(','').replace(')','').replace(',',''))

2, 求累加和

求1+2+3+...+n的和的个位数

输入格式:

一个整数n,1<=n<=10^9

输出格式:

输出和

输入样例:

10

输出样例:

5

题解:

print(int(list(map(lambda x:(x+1)*x*0.5,[int(input())]))[0]%10))

3, 将数据排序

输入若干个正整数,升序排序后输出。

输入格式:

在一行中输入若干个数,以空格分隔。

输出格式:

输出升序排序后的数,以空格分隔,最后一个数后也有空格

输入样例:

4 5 67 3 99 2 7

输出样例:

2 3 4 5 7 67 99 

题解:

print(" ".join(list(map(str,sorted(list(map(int,input().split()))))))+" ")

4,二分搜索(分治法)

给定已按非升序排好的n个元素a[0:n-1],在这n个元素中找出一特定元素x。要求算法在最坏情况下的时间效率为 O(logn)。

输入格式:

第一行为n值(n<=1000)和x值;第二行为n个整数。

输出格式:

如果找到x,输出x的下标;否则,输出-1

输入样例:

5 2
5 4 3 2 1

输出样例:

3

题解:

ssd,yyds=input().split()[1],input().split();print([i for i in enumerate(yyds) if i[1] == ssd][0][0] if [i for i in enumerate(yyds) if i[1] == ssd]!=[] else-1)

5,改写二分搜索算法

设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。

输入格式:

输入有两行:

第一行是n值和x值;
第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。

输出格式:

输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。
提示:若x小于全部数值,则输出:-1 0
若x大于全部数值,则输出:n-1的值 n的值

输入样例:

在这里给出一组输入。例如:

6 5
2 4 6 8 10 12

输出样例:

在这里给出相应的输出。例如:

1 2

题解:

df,sb=input().split(),input().split();print('-1 0' if int(df[1])int(sb[-1]) else f'{len(sb)-1} {len(sb)-1}' if int(df[1])==int(sb[-1]) else f'{sb.index(df[1])-1} {sb.index(df[1])+1}' if df[1] in sb else f'{[i for i in enumerate(sb) if int(i[1])

你可能感兴趣的:(蓝桥杯,职场和发展,python)