一、赛后感受
前三道题目较为简单。听别人说第一、二题是前面竞赛考过的原题,其实这些题目我都没有遇到过,最后一题我没能答对。
答题所需的数学水平不用太高,像我这样的初中数学水平就可以了。
我上次参赛还是第七期的时候了,上次只得了25分,经过上次考试后吸取了不少经验,以70分的成绩取得了38名的成绩。
emm…虽然说很差,只留下了三道Python题解,但是我也尽力了😁
二、给官方的建议
希望官方能够开放在本地IDE调试功能,或者优化一下考试系统中的自动补全功能,毕竟没有自动补全的日子真的太难过了😭
三、Python题解
第一题题解(小艺读书)
输入:
书页数
一周中每天的读书页数
输出:
读完时间(星期几)
class Solution:
def __init__(self) -> None:
pass
def solution(self, n, pages):
result = None
# TODO: 请在此编写代码
T=0
while n >0:
for i in pages:
n-=i
T+=1
if n<=0:
break
result=T%7
if result==0:
result=7
return result
if __name__ == "__main__":
n = int(input().strip())
pages = [int(item) for item in input().strip().split()]
sol = Solution()
result = sol.solution(n, pages)
print(result)
第二题题解(鬼画符门之宗门大比)
给定整数序列A。求在整数序列A中连续权值最大的子序列的权值。
输入:
整数序列
输出:
序列中连续权值最大的子序列的权值
class Solution:
def __init__(self) -> None:
pass
def solution(self, n, arr):
result = None
# TODO: 请在此编写代码
nn=fn=0
for i in arr:
nn+=i
if nn>fn:
fn=nn
elif nn<0:
nn=0
result=fn
return result
if __name__ == "__main__":
n = int(input().strip())
arr = [int(item) for item in input().strip().split()]
sol = Solution()
result = sol.solution(n, arr)
print(result)
第三题题解:硬币划分
有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱(n<=100000),有多少中组合可以组成n分钱?
输入:
给定分钱n
输出:
组合方案数
class Solution:
def __init__(self) -> None:
pass
def solution(self, n):
result = None
# TODO: 请在此编写代码
goods=[1,2,5,10]
dp=[0]*(n+1)
dp[0]=1
for i in goods:
for j in range(n+1):
if j>=i:
dp[j]+=dp[j-i]
result=dp[-1]%(10**9+7)
return result
if __name__ == "__main__":
n = int(input().strip())
sol = Solution()
result = sol.solution(n)
print(result)