数字三角形卡片排序成绩分析等差素数列
数字三角形2020省赛 动态规划 dp
输入输出样例
输入:
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)
排序
2020 省赛 填空
代码:
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")
成绩分析
模拟 暴力 2020 省赛
输入输出样例
输入:
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))
等差素数列
2017 填空 省赛
import os
import sys
def pan(n):#判断素数
for i in range(2,n):
if n%i==0:
return False
return True
f=0#数多少个
a=0#记录第一个数
b=0#记录公差
for i in range(2,1000):#第一个素数 范围可以调整
if pan(i)==False:
continue
else:#是素数的话
for j in range(1,501): #公差 范围可以调整
f=0
for r in range(i+j,i+j*11,j):
if pan(r)==False:
break
else:
f+=1
if f==9:#有十个等差素数的数列
a=i
b=j
break
if a!=0:
break
if a==0:
print("no")
else:
print(b)



