python蓝桥杯真题刷题打卡 | day2

目录

  • 数字三角形
  • 卡片
  • 排序
  • 成绩分析
  • 等差素数列

数字三角形

2020省赛 动态规划 dp
python蓝桥杯真题刷题打卡 | day2_第1张图片
输入输出样例
输入:

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 填空 省赛
python蓝桥杯真题刷题打卡 | day2_第2张图片
由题目可知,数字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 省赛 填空
python蓝桥杯真题刷题打卡 | day2_第3张图片

代码:

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 省赛
python蓝桥杯真题刷题打卡 | day2_第4张图片
输入输出样例
输入:

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 填空 省赛
python蓝桥杯真题刷题打卡 | day2_第5张图片

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))

你可能感兴趣的:(python算法,python,蓝桥杯,动态规划)