中秋欢乐赛-最奇葩Py题解 #创作计划#
2024-09-18 11:27:53
发布于:浙江
ACGO欢乐赛 #28中秋赛 最奇葩非官方Python题解
挑战全部题目一行搞定!
非官方题解,本蒟蒻写着玩的
1.四数最大值
思路
- 输入,split切分转ing,再max求最大值
代码
print(max(map(int, input().split(' '))))
2.数学函数
思路
- 输入操作指令和数字,方法和上面一样
- 根据操作指令进行计算
代码(正常版)
command = input()
if command == "ceil":
print((lambda num: num if num == int(num) else int(num) + 1)(float(input())))
elif command == "floor":
print(int(float(input())))
elif command == "round":
print(int(float(input()) + 0.5))
代码(奇葩版)
print((lambda command: (lambda num: num if num == int(num) else int(num) + 1)(float(input())) if command == "ceil" else (lambda text: int(float(input()))if command == "floor" else int(float(input()) + 0.5))(command))(input()))
3.支付失败
思路
- 输入各种数
- 求和,判断是否大于等于手头的钱
代码
print("YES" if list(map(int, input().split()))[1] >= sum(list(map(int, input().split()))) else "NO")
4.任务-宝石
思路
- 首先题目要求我们每个人分到的金额各不相同且是整数,那么就类似1 2 3 4 5 ... n 这种数列
- 输入n,然后根据上面的规则,求出数列,在求和
代码
print(sum(range(1, int(input()) + 1)))
5.艾丽娅的任务
思路
- 输入n,题目要求我们求出类似这样的数列:1+(1+2)+(1+2+3)+(1+2+3+4)+⋯+(1+2+3+4+5+⋯+n)
- 两层循环嵌套,用等差数列的求和公式求和出里面一层的,再把上一步求和的全部加起来,最后输出即可
代码
print(sum(map(lambda x: x*(x+1)//2, range(1, int(input())+1))))
6.最大硬盘
思路
- 先全输进来
- 然后全部转成统一的单位
- 然后求出最大的那个
代码(展开版)
print(
max(
list(
map(
lambda x:
(
' '.join(x),
int(x[0]) * {
"B": 1,
"KB": 1000,
"MB": 1000 ** 2,
"GB": 1000 ** 3
}[x[1]]
),
(
input().split() for _ in range(int(input()))))
),
key=lambda x: x[1]
)[0]
)
代码(压缩版)
print(max(list(map(lambda x: (' '.join(x), int(x[0]) * {"B": 1, "KB": 1000, "MB": 1000 ** 2, "GB": 1000 ** 3}[x[1]]),(input().split() for _ in range(int(input()))))), key=lambda x: x[1])[0])
7.找到acgo
思路
- 比赛的时候写着写着突然想到一个奇葩的思路——用正则表达式(
re
)来匹配
代码
print("YES" if __import__("re").search(r"a.*c.*g.*o", input()) else "NO")
8.丢失的数据
思路
- 把全部的数输入先
- 剔除大于k或者小于1的数以及重复的数
- 剩下的数求和,用1-k的数求和的值去减前面的值,得到丢失的数的和
代码(展开版)
print(
(
lambda k:
(
k*(k+1)//2
) - sum(
set(
[_ for _ in map(
lambda x: int(x)
if k >= int(x) > 0 else None, input().split()
) if _ is not None]
)
)
)(
list(
map(int, input().split())
)[1]
)
)
代码(压缩版)
print((lambda k: (k*(k+1)//2) - sum(set([_ for _ in map(lambda x: int(x) if k >= int(x) > 0 else None, input().split()) if _ is not None])))(list(map(int, input().split()))[1]))
今天的奇葩题解就到这吧(
全部评论 4
qp
2天前 来自 上海
0前排
2天前 来自 上海
0
qpqp
2天前 来自 上海
0__import__("re").search()
,库还能这么调用,学费了()2天前 来自 上海
0python小寄巧
2天前 来自 浙江
0
qp大佬
2天前 来自 上海
0qp……是啥玩意
恕我学识尚浅2天前 来自 浙江
0洛谷的梗
2天前 来自 上海
0讲讲
2天前 来自 浙江
0
顶
2天前 来自 浙江
0顶
2天前 来自 浙江
0
有帮助,赞一个