目录
感受:
第六次参加了。整体上说,这次题目非常简单。第一,二题是前面竞赛考过的原题,题目难度都比较低。第三,四题,根据我参加的经历没有遇到,不确定是不是原题,没准是一到三期的原题我也不知道。最近一直在看动态规划的题,第三题就是一道简单的动态规划。第四题也没什么难度,不需要什么知识储备,初中数学就够了。都也不需要什么思路,当然难一点的题目,我可能就做不出来了,就无必要思路了。直接上代码
感觉这次的题目出题描述不严谨。第二题印象中示例有一个写错了。没细看,印象中示例二写错了。第四题描述也不够清晰,龙在小艺刚刚完成逃离结界路程的时候追上要不要给珠宝。
1、题目名称:小艺读书
输入:
书页数
一周中每天的读书页数
输出:
读完时间(星期几)
class Solution:
def __init__(self) -> None:
pass
def solution(self, n, pages):
result = None
# TODO: 请在此编写代码
day=0
while n >0:
for i in pages:
n-=i
day+=1
if n<=0:
break
result=day%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)
2、题目名称:鬼画符门之宗门大比
给定整数序列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)
3、题目名称:硬币划分
有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)
4、题目名称:饿龙咆哮-逃离城堡
小艺酱误入龙族结界,被恶龙带回城堡,小艺酱决定逃离城堡,逃离龙族结界.。 总路程为c, 小艺酱的速度是vp,饿龙速度为vd。饿龙会在t小时后发现小艺酱出逃。 小艺酱担心自己跑不出去,准备了好多珍宝。 每当饿龙追上自己的时候小艺酱就会丢下一个珍宝,饿龙捡到珍宝会返回自 己的城堡进行研究,研究f小时后,再出城堡追赶小艺。 小艺想知道自己至少需要丢多少珍宝才能让自己安全逃出结界。
输入:
vp, vd, t, f, c
输出:
需丢珍宝数
class Solution:
def __init__(self) -> None:
pass
def solution(self, vp, vd, t, f, c):
result = None
# TODO: 请在此编写代码
if vp>=vd:
return 0
else:
s=vp*(t+(vp*t)/(vd-vp))
n=0
while s<c:
n+=1
s+=((s+vp*(f+s/vd))/(vd-vp))*vp+vp*(f+s/vd)
result=n
return result
if __name__ == "__main__":
vp = int(input().strip())
vd = int(input().strip())
t = int(input().strip())
f = int(input().strip())
c = int(input().strip())
sol = Solution()
result = sol.solution(vp, vd, t, f, c)
print(result)