ACGO欢乐赛#26 - 非官方py题解
2024-08-05 11:35:48
发布于:浙江
ACGO欢乐赛 #26非官方Python题解
非官方题解,本蒟蒻写着玩的
1. 消息堆积 传送门
n = int(input())
print(n if n < 99 else "99+")
解析:
题目很简单,如果消息数量小于99,直接输出数量,否则输出“99+”。
2. 下雨天 传送门
print("YES" if int(input()) > 0 else "NO")
解析:
根据输入值判断是否为下雨天,输入值大于0输出“YES”,否则输出“NO”。
3. QQ捏捏好喝到咩噗咩噗奶茶 传送门
n, m, k, v = map(int, input().split())
need = n // k * k * int(v * 0.7) + (n - (n // k * k)) * v if n >= k else n * v
print("YES\n" + str(m - need) if need <= m else "NO\n" + str(need - m))
解析:
- n: 需要多少杯奶茶
- m: 有多少钱
- k: 每k杯奶茶可以打七折
- v: 每杯奶茶的价格
如果买的杯数小于k,直接计算总价n * v
;否则,计算可以打折的部分和不能打折的部分的总价。然后与m比较,判断钱是否足够,并输出相应的结果和剩余或缺少的钱。
4. 甜筒在哪里 传送门
n, x = map(int, input().split())
print(max([i for i in map(int, input().split()) if i < x and i % 2 == 0], default=-1))
解析:
输出小于x且为偶数的数中的最大值,如果不存在则输出-1。
5. 字符变换 传送门
a, b = input(), input()
print('YES' if sorted(a) == sorted(b) else 'NO')
解析:
比较两个字符串排序后的结果是否相等,相等输出“YES”,否则输出“NO”。
6. 判断子序列 传送门
s, t = input(), input()
s_i = 0
for char in t:
if char == s[s_i]:
s_i += 1
if s_i == len(s):
break
print('YES' if s_i == len(s) else 'NO')
解析:
遍历字符串t,如果t中的字符和s中的字符相等,s的指针向后移动一位。如果s的指针移动到s的末尾,输出“YES”,否则输出“NO”。
7. 16进制加法 传送门
print(hex(sum(map(lambda x: int(x, 16), input().split()))).upper())
解析:
把输入的16进制数解码成int,再相加,然后转回16进制。
8. X Y A B 传送门
x, y = map(int, input().split())
a, b = map(int, input().split())
gcd = lambda m, n: m if not n else gcd(n, m % n)
lcm = lambda m, n: m * n // gcd(m, n)
print((y - x + 1) - ((y // a - (x - 1) // a) + (y // b - (x - 1) // b) - (y // lcm(a, b) - (x - 1) // lcm(a, b))))
解析:
计算在区间[x, y]内不能被a或b整除的数的个数。用到最大公约数(gcd)和最小公倍数(lcm)来计算同时被a和b整除的数。
总结
这次的欢乐赛题解就到这里,个人觉得这次欢乐赛难度比上次高了一些,希望这次能拿个奖品!
全部评论 4
我和“大香蕉树”的小伙伴都在ACGO等你,快用这个专属链接加入我们吧!https://www.acgo.cn/application/1815619424530272256
2024-07-30 来自 浙江
0张XX又去集训啦?
2024-07-30 来自 浙江
0厉害
2024-07-30 来自 浙江
0难道这就是传说中的极限压行🤯
2024-07-30 来自 湖南
0
有帮助,赞一个