题目分析
第一题
本题考察的是条件分支的 if else
语句的应用,分别根据条件枚举三种计算即可。
class Solution:
def __init__(self) -> None:
pass
def solution(self, amount):
result = None
if amount<=150:
result = amount * 0.4463
elif amount>=151 and amount <=400:
result = 150*0.4463+(amount-150)*0.4663
elif amount >=401:
result = 150*0.4463+250*0.4663+(amount-400)*0.5663
result = round(result, 1)
return result
if __name__ == "__main__":
amount = int(input().strip())
s = Solution()
result = s.solution(amount)
print(result)
第二题
本题考察的是字符串的处理问题,因此存在多种解答。笔者就看到了用 Javascript
一行解决的方法,还有用 C++
模板类的做法,当然直接暴力也不难:
import string
class Solution:
def __init__(self) -> None:
pass
def solution(self, str):
result = ''
spaces = [-1]
strips=[]
for i in range(len(str)):
if str[i]==' ':
spaces.append(i)
final = len(str)
spaces.append(final)
for i in range(len(spaces)-1):
strips.append(str[(spaces[i]+1):(spaces[i+1])])
for i in range(len(strips)-1, -1, -1):
result=result + strips[i]
if i != -1:
result = result+' '
return result
if __name__ == "__main__":
str = input().strip()
s = Solution()
result = s.solution(str)
print(result)
第三题
本题考察的是动态规划,也可以直接开二维数组解决,具体可以参考这篇文章,我的实现如下:
def get_ans(n,k):
if k==1 or n==k:
return 1
elif n<k:
return 0
else:
return (get_ans(n-1,k-1) + get_ans(n-k, k))
if __name__ == "__main__":
modd = 1000000007
n,k = map(int, input().split())
result = (get_ans(n,k) % modd)
print(result)
第四题
本题的题意比较模糊,笔者 10 个点过了 2 个点,当时的解决方案如下:
def solution(n, arr):
result = None
newarr=[]
for i in range(n):
newarr.append(arr[i]-min(i,n-1-i))
cnt = 0
for i in range(n):
cnt = max(cnt, newarr.count(newarr[i]))
result = n-cnt
return result
if __name__ == "__main__":
n = int(input().strip())
arr = [int(item) for item in input().strip().split()]
result =solution(n, arr)
print(result)
最终结果: 25 + 25 + 25 + 5 = 80 , rank = 5 25+25+25+5=80, \text{rank}=5 25+25+25+5=80,rank=5
建议
- 本次比赛的编辑器并不是非常友好,例如调试中注释的快捷键
Ctrl + /
就无法使用,因此笔者在考试时实际使用了jupyter notebook
编辑器并复制进去(20 次的复制和切屏限制应该还算合理) - 必须要 10 秒才能调试一次这个限制或许是因为评测机性能的问题,防止恶意提交,但这个限制也在比赛过程中比较浪费时间。
- 一开始题意叙述不清,并且第三题的数据甚至出现了问题,使人感觉审核环节仿佛形同虚设。
- 最后希望官方能够在比赛结束后迅速给出题解,以供学习,这样才能完全达到比赛的最好效果。
当然,举办这样一场比赛也是十分不容易的,希望以后 CSDN 的编程竞赛能够越办越好!