2021年蓝桥杯赛题【Python】

2023-11-14

【填空】

1、卡片

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。 小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个, 就保存起来,卡片就不能用来拼其它数了。 小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 11 到 1010, 但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210张,请问小蓝可以从 1 拼到多少?

import os
import sys
n = sys.maxsize
num = 0
for i in range(1,n):
    num += str(i).count('1')
    if num > 2021:
      print(i-1)
      break
#结果:3181

2、空间

请问 256MB 的空间可以存储多少个 32 位二进制整数?

#需要知道32位二进制占内存4B
n = 256*1024*1024
print(int(n/4))

3、路径

问题描述

小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。
小蓝的图由 2021 个结点组成,依次编号 1 至 2021。
对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。
例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无 向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。

计算要求
请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

思路
1、算法:dp动态规划
2、步骤

  • 构造一个n*n的矩阵
  • 利用两个for循环,遍历1到2021的最短路径,每次遍历数时,对应的数值会变化成最短路径
  • 到最后,索引值为2021,便是最优路径

3、将1到2021路径最短问题->n个类似与1到(2,22)的最短路径的小问题。

import math
#求最大公因数
# def gcd(a,b):
#   if b == 0:
#     return a
#   else:
#     return gcd(b,a%b)
#求最小公倍数
# def gbs(a,b):
#   return a*b // gcd(a,b)
dp = [float('inf')] * (2021+1) #inf正无穷
dp[1] = 0
for i in range(1,2022):
  for j in range(i+2,i+22):
    if j > 2021:
      break
    # dp[j] = min(dp[j] , dp[i]+gbs(i,j))
    dp[j] = min(dp[j] , dp[i]+i*j // math.gcd(i,j))

print(dp[2021])

4、相乘

问题描述

小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后 再除以 1000000007后的余数为 999999999。

结果提交
如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 0。

分析

  1. 不能直接依据题目那样所讲的遍历1~1000000007,不然会超时
  2. 转换下运算公式

在这里插入图片描述

#超时
# for i in range(1,1000000008):
#   n = (i*2021) % 1000000007
#   if n == 999999999:
#     print(i)
#     break

for i in range(1,2022):
  if (i*1000000007+999999999) % 2021 == 0:
    print(int((i*1000000007+999999999) / 2021))
    break 

5、回路计数

6、距离和

问题描述
两个字母之间的距离定义为它们在字母表中位置的距离。例如 AA 和 CC 的距离为 22,LL 和 QQ 的距离为 55。
对于一个字符串,我们称字符串中两两字符之间的距离之和为字符串的内部距离。
例如:ZOO 的内部距离为 2222,其中 ZZ 和 OO 的距离为 1111。

求解
请问,LANQIAO 的内部距离是多少?

lst = 'LANQIAO'
# a = []
count = 0
n = len(lst)

#先转ASCLL码值,再相减,ord()转ascll值,abs()绝对值
for i in range(n):
  for j in range(i+1,n):
    count += abs(ord(lst[i]) - ord(lst[j]))
print(count)

7、序列个数

请问有多少个序列满足下面的条件:
序列的长度为 5。
序列中的每个数都是 1 到 10 之间的整数。
序列中后面的数大于等于前面的数。

num=0
for i in range(10):
  for j in range(i,10):
    for m in range(j,10):
      for n in range(m,10):
        for k in range(n,10):
          num +=1
print(num)

8、数学位数

问题描述

整数 11 到 1212 连在一起,成为 123456789101112,长度为 1515。

求解
请问整数 11 到 20202020 连在一起,长度为多少?

import os
import sys
a = []
for i in range(1,2021):
  a.append(i)
ls = int("".join(map(str,a)))
num = len(str(ls))
print(num)

9、货物摆放

问题描述
在这里插入图片描述

import os
import sys

# 请在此输入您的代码
n = 2021041820210418 #货物数量 
count = 0 #统计值赋初始值0 
docker = set() #创建集合属性的容器

for i in range(1,int(n**0.5)+1): #循环遍历,筛选n的约数(对n开根号的写法能加快速度) 
    if n%i == 0: #判断约数 
      docker.add(i) #添加约数 
      docker.add(n//i)

for i in docker: #三重循环遍历容器(三重循环快到运行5秒出结果) 
    for j in docker: 
          for k in docker: 
            if i*j*k == n: 
              count += 1 #满足条件,方案数+1 
print(count) #打印结果

【设计题】

1、杨辉三角

问题描述
在这里插入图片描述
在这里插入图片描述
参考大佬博客

#阶乘
def C(a,b):
  i,j = a,1
  res = 1
  while j <= b:
    res = res*i/j
    i -= 1
    j += 1
  # print(res)
  return int(res)

#查找
def searve(x,n):
  minl  = 2*x  #下限 
  uppl = n #底数的最大上限C(4,2) and C(6,1)

  while minl <= uppl:
    mid = (uppl + minl) // 2
    if C(mid,x) == n:#取中
      print(int(mid* ( mid+1 ) /2 ) + x + 1)
      return True

    elif C(mid,x) > n: #数值大于所求的数,缩小上限范围
      uppl = mid - 1
    else:
      minl = mid + 1
  return False

n = int(input())

for i in range(16,-1,-1):
  if searve(i,n):#传送数的列位置和需要求的数值
    break

2、最小砝码

参考资料
问题描述
在这里插入图片描述

import os
import sys

N = int(input())
i = 1
ans = 1
while i<N:
  i = i*3 +1
  print(i)
  ans += 1
print(ans)

3、左孩子右兄弟

问题描述
在这里插入图片描述
在这里插入图片描述

考点

  • 树结构
  • 深度搜索DFS,每次探索一个节点到底,回去原点,再去其他的。
  • 递归算法

个人解题思路
看图(比较潦草)
在这里插入图片描述

参考博客
左孩子右兄弟含义

import os
import sys

n = int(input())
#在这里,对于所有评测用例: 1000001≤N≤100000会出现递归次数频繁,导致无效返回
#原因:python默认的递归深度是很有限的,大约900多
sys.setrecursionlimit(1000000) 
tree = [[] for _ in range(n+1)]

#构造一个类似于树结构的二维列表
#例如题目中的1 1 1 2
"""
0 【1】
1 【2,3,4】
2 【5】
"""
for i in range(2,n+1):
    m = int(input())
    tree[m].append(i)

#深度搜索操作
def dfs(j):
  if tree[j] == None:
    return 0

  maxs = 0

  for i in tree[j]:
    maxs = max(maxs ,dfs(i)) #递归下一层数值,并返回其长度
  return len(tree[j])+maxs
print(dfs(1))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021年蓝桥杯赛题【Python】 的相关文章

  • PyQt:如何通过匿名代理使用网页

    这真让我抓狂 我想在 QWebPage 中显示一个 url 但我想通过匿名代理来实现 Code setting up the proxy proxy QNetworkProxy proxy setHostName 189 75 98 199
  • boto3 资源(例如 DynamoDB.Table)的类型注释

    The boto3库提供了几种返回资源的工厂方法 例如 dynamo boto3 resource dynamodb Table os environ DYNAMODB TABLE 我想注释这些资源 以便我可以获得更好的类型检查和完成 但我
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • 希伯来语中的稀疏句子标记化错误

    尝试对希伯来语使用稀疏句子标记 import spacy nlp spacy load he doc nlp text sents list doc sents I get Warning no model found for he Onl
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 当单词以“|”分隔时如何读取文件(埃因霍温)?

    在Python中 我有一个文件 其中的单词由 例如 city state zipcode 我的文件阅读器无法区分单词 另外 我希望我的文件阅读器从第 2 行而不是第 1 行开始 如何让我的文件阅读器分隔单词 import os import
  • 更改 Altair 中的构面标题位置?

    如何将方面标题 在本例中为年份 移动到每个图的上方 默认值似乎位于图表的一侧 这可以轻易改变吗 import altair as alt from vega datasets import data df data seattle weat
  • 如何在 Python 3 中循环遍历集合,同时从集合中删除项目

    这是我的情况 我有一个list set 哪个并不重要 movieplayer我想调用的对象 preload 功能开启 该预加载函数可以立即返回 但希望将来返回一点 我想存储这个电影播放器 集合 表明它们尚未预加载 然后循环它们 调用prel
  • 更改 python tkinter canvas 中的线坐标

    我画了一条线tkinter Canvas现在我想移动一端 这可能吗 例如和itemconfig import tkinter tk tkinter Tk canvas tkinter Canvas tk canvas pack line c
  • Python Fabric - 未找到主机。请指定用于连接的(单个)主机字符串:

    如何获取 找不到主机 请指定用于连接的 单个 主机字符串 面料如何解决 def bootstrap host ec2 54 xxx xxx xxx compute 1 amazonaws com env hosts host env use
  • python是带有字符串的运算符行为[重复]

    这个问题在这里已经有答案了 我无法理解以下行为 我正在创建 2 个字符串 并使用 is 运算符来比较它 对于第一种情况 它的工作方式有所不同 对于第二种情况 它按预期工作 当我使用逗号或空格时 它显示是什么原因False与比较is当没有使用
  • 为什么我无法在 Mac OS X Terminal.app 上的 Python 解释器中显示 unicode 字符?

    如果我尝试粘贴 unicode 字符 例如中间的点 在我的 python 解释器中它什么也不做 我在 Mac OS X 上使用 Terminal app 当我只是在 bash 中时 我没有遇到任何问题 但在解释器中 python Pytho
  • 动态 __init_subclass__ 方法的参数绑定

    我正在尝试让类装饰器工作 装饰器会添加一个 init subclass 方法到它所应用的类 但是 当该方法动态添加到类中时 第一个参数不会绑定到子类对象 为什么会发生这种情况 举个例子 这是可行的 下面的静态代码是我试图最终得到的示例 cl
  • 如何使用 Django 项目设置 SQLite?

    我已阅读 Django 文档 仅供参考 https docs djangoproject com en 1 3 intro tutorial01 https docs djangoproject com en 1 3 intro tutor
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • PyTorch DataLoader 对并行运行的批次使用相同的随机种子

    有一个bug https tanelp github io posts a bug that plagues thousands of open source ml projects 在 PyTorch Numpy 中 当并行加载批次时Da
  • 将文本注释到轴并对齐为圆

    我正在尝试在轴上绘制文本并将该文本与圆对齐 更准确地说 有一些具有不同坐标 x y 的点位于该圆内 并使用以下命令创建 ax scatter x y s 100 我想用圆圈连接并标记每个点 Cnameb 文本的坐标由 xp yp 定义 因此
  • Python]将两个文本文件合并为一个(逐行)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是蟒蛇新手 我想做的是将文件 a 和文件 b 逐行合并到一个文件中 例如 text file a a n b n c text fi
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm

随机推荐

  • 过拟合:所表现的就是模型训练误差很小,但测试误差很大,对于产生这种现象以下说法正确

    过拟合 所表现的就是模型训练误差很小 但测试误差很大 对于产生这种现象以下说法正确 提示 基础知识 1 深度学习机器学习笔试面试知识 正则化 文章目录 过拟合 所表现的就是模型训练误差很小 但测试误差很大 对于产生这种现象以下说法正确 TO
  • 关于echarts 图,在切换tab后,返回时宽度变窄的问题

    项目场景 提示 这里简述项目相关背景 最近在做一个统计报表的项目 需要插入ECharts 图表和表格做统计 并且可以导出Excel 表格 问题描述 提示 这里描述项目中遇到的问题 在开发过程中 碰到了一个 echarts 图在切换到 tab
  • KubeEdge环境搭建(支持网络插件flannel)

    KubeEdge环境搭建 准备工作 K8s集群环境搭建 准备开始 配置国内镜像 仅amd64架构 如果是arm架构的不要更改镜像 安装docker 安装K8s 初始化Master节点 网络插件安装 部署可视化KuBoard Cloud节点配
  • 算法的复杂度解析(时间复杂度和空间复杂度)

    时间复杂度与空间复杂度 1 算法的复杂度 2 时间复杂度 1 大O表示法 2 大O推导方法 3 一些常见的大O运行时间 3 空间复杂度 4 个别特殊举例 1 斐波那契数列的时间和空间复杂度 2 二分法的时间复杂度和空间复杂度 1 算法的复杂
  • 单片机C语言 -- 基于条件选择的状态机编程技巧

    感谢阅读本文 在接下来很长的一段时间里 我将陆续分享项目实战经验 从电源 单片机 晶体管 驱动电路 显示电路 有线通讯 无线通信 传感器 原理图设计 PCB设计 软件设计 上位机等 给新手综合学习的平台 给老司机交流的平台 所有文章来源于项
  • TypeScript中的对象类型(可选属性 只读属性 交叉类型)

    一 定义对象类型 在TypeScript中定义对象类型有以下三种方式 1 匿名对象类型 匿名对象类型是在定义变量时直接使用花括号 来定义一个对象类型 例如 const person name string age number name J
  • LayUI之CRUD(增删改查)

    目录 前言 一 前端静态模板 二 用户管理后台代码 查看表 MySQL数据库 表结构 实体类 Dao方法 UserDao 查询 增加 删除 修改 测试后台dao方法 Junit UserDaoTest 查询 增加 修改 删除 web 三 用
  • pythonturtle库函数详解_详解python中的Turtle函数库

    python对函数库的引用方式 1 import 例如 import turtle 如果需要使用库函数中的函数 需要使用 例如 import turtle turtle fd 100 2 from import from import 使用
  • 离散数学——成真赋值与成假赋值

    今天复习离散数学的时候饱受一个问题的困扰 为什么主析取范式和主合取范式的小项和大项采用不一样的赋值方式 查阅一些资料后得出答案 在这里分享给大家 首先给大家明确一下赋值 成真赋值 成假赋值的概念 对于一个命题公式P中的所有命题变项指定一组真
  • 魅蓝note6救砖_魅蓝NOte6获取完美root 框架教程步骤+救砖完整线刷固件

    魅蓝note6真正可以root的版本是Flyme6 1 4 6A 而官网已经下架了这个版本的ROM包 需要下载的朋友可私信发我 1 通过官方REC 版本降级为Flyme6 1 4 6A 然后打开魅族手机自带的root 打开它的原因 便是给第
  • 【统计学】分类数据分析 相关分析 方差分析 比较 研究思路 spss

    分类数据分析是针对类别型变量之间是否有影响进行的分析 而相关分析是类别型变量之间有影响的前提下 研究变量间相关的程度 以及正相关还是负相关 方差分析稍有不同 是研究分类型变量对数值型变量的影响 而不是类别型变量之间的关系 上统计学课的时候这
  • ubuntu pycharm卡住的解决办法

    pycharm界面卡住 无法关闭也无法执行任何操作 解决办法 1 终端输入 ps ef命令 获得所有进程信息 2 找到pycharm进程对应的PID号 第二列即为PID 3 输入kill s 9 PID号 如kill s 9 2136将会结
  • go实战学习——context包学习理解笔记

    context包学习理解笔记 context包 context接口 context实例 valueCtx 控制 cancelCtx 核心cancel方法 timerCtx context包使用注意事项 学习golang时 在看一下项目的源码
  • vsce报错The Personal Access Token verification has failed.,vsce login登录时同报此错的解决办法

    本篇文章主要讲解vscode插件开发提交插件版本时出现的token报错问题的解决办法 日期 2023年6月15日 作者 任聪聪 报错现象 1 vsce login 用户id报错如下 具体报错内容 The Personal Access To
  • mysql 与sybase小知识

    MySQL与Sybase不同点 MySQL没有if exists Sybase有if exists MySQL中无select into语句 sybase中可用select into MySQL查询其他表数据并插入到新表 create ta
  • 11.Vuex学习

    Vuex学习 一 Vuex是什么 为什么要用它 1 vue中各个组件之间传值 2 Vuex 3 vuex使用步骤 二 Vuex异步加载 一 Vuex是什么 为什么要用它 1 vue中各个组件之间传值 1 父子组件 父组件 gt 子组件 通过
  • # 经典目标检测识别方法概述RCNN/FAST/FASTER RCNN/MASK RCNN/SSD/DSSD/YOLO V1/YOLO V2等

    经典目标检测识别方法概述 陈子逸 经典目标检测识别方法概述 由于水硕期间自学了一些目标探测的方法 这里做一个概述 肯定有不完美的地方 还请指正一起进步 综述 1 分别简单描述一下RCNN系列 在我看来 RCNN 是一个benchmark 首
  • 基于element-ui Table 进行二次封装

    基于 ElTable 组件进行二次封装 创建 BaseTable vue 文件
  • C++ 继承(1): 继承方式(public, protected, private)

    C 继承 1 继承方式 public protected private 继承中的特殊关系 隐藏 is a 在水一方xym的博客 CSDN博客 C 远征之继承篇 视频教程 笔记 方便自己查阅和复习 温故而知新 目录 1 c 继承简介 代码示
  • 2021年蓝桥杯赛题【Python】

    填空 1 卡片 小蓝有很多数字卡片 每张卡片上都是数字 0 到 9 小蓝准备用这些卡片来拼一些数 他想从 1 开始拼出正整数 每拼一个 就保存起来 卡片就不能用来拼其它数了 小蓝想知道自己能从 1 拼到多少 例如 当小蓝有 30 张卡片 其