5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出:
27
代码:
import os
import sys
# 请在此输入您的代码
h = int(input()) # 输入数据
W = [list(map(int, input().split())) for i in range(h)]
# 循环遍历计算到每一行的和的最大值
for i in range(1, h):
for j in range(0, i + 1):
if j == 0: # 最左边元素只能由右上方得到
W[i][j] += W[i - 1][j]
elif j == i: # 最右边元素只能由左上方得到
W[i][j] += W[i - 1][j - 1]
else: # 其余元素由上方较大值得到
W[i][j] += max(W[i - 1][j - 1: j + 1])
if len(W)%2 == 0:
print(max(W[-1][h // 2 - 1], W[-1][h // 2]))
else:
print(W[-1][h // 2])
2021 填空 省赛
由题目可知,数字1应该是最先被用完的,所以我们这里只统计1的个数,当超过2021时,则终止
代码:
num=0 #用num用来累计用过的数字“1”的次数
for i in range(1,10000):
num+=str(i).count("1") #出现过几次1就 给num加上多少
if num>2021: #当num数量超过2021时卡牌数量不足
break
print(i-1)
代码:
import os
import sys
# 请在此输入您的代码
'''
全逆乱序的冒泡排序次数为N*(N-1)/2
15*14/2=105
14*13/2=91
100次交换至少需要15个字母
onmlkgihgfedcba
105-100=5,只需把第6个字母往后移到第1位即可
'''
print("jonmlkihgfedcba")
7
80
92
56
74
88
99
10
输出:
99
10
71.29
代码
import os
import sys
# 请在此输入您的代码
num = int(input())
score_list = [int(input()) for i in range(num)]
print(max(score_list))
print(min(score_list))
print("{:.2f}".format(sum(score_list)/num))
def f(n):
k = int(n ** 0.5)
for i in range(2,k+1):
if n % i == 0:
return False
else:
return True
num = []
for i in range(3,1000,2):
for j in range(1,1000):
if f(i+j) and f(i+2*j) and f(i+3*j) and f(i+4*j) and f(i+5*j) and f(i+6*j) and f(i+7*j) and f(i+8*j) and f(i+9*j) and f(i):
num.append(j)
print(min(num))