第十一届蓝桥杯大赛第二次模拟(软件类Python3)

第十一届蓝桥杯大赛第二次模拟(软件类Python3)

第十一届蓝桥杯大赛第二次模拟(软件类Python3)

题目以及部分思路原文链接:https://blog.csdn.net/weixin_43964993/article/details/108308834

1. 12.5MB

【问题描述】
在计算机存储中,12.5MB是多少字节?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

''' 思路: 1MB = 1024KB 1KB = 1024B(字节) '''
#实现:
print(int(12.5*1024**2))
#结果
13107200

2. 最多边数

【问题描述】
一个包含有2019个结点的有向图,最多包含多少条边?(不允许有重边)
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

''' 思路: 有向图,最多就是全连接(补充:有向图是无向图的两倍) 有2019个点,每个点都由自身方向到其他点,有2018条。所以2019*2018 '''
#实现:
print(2019*2018)
#结果
4074342

3. 单词重排

【问题描述】
将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。
请问,总共能排列如多少个不同的单词。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

python 思路: 排练组合问题:选择两个位置让A占,C72 ,剩下五个进行全排练A55

#实现:
if __name__ == '__main__':
    a = 7*6/2
    b = 1*2*3*4*5
    print(int(a*b))
#结果
2520

​4. 括号序列

【问题描述】
由1对括号,可以组成一种合法括号序列:()。
由2对括号,可以组成两种合法括号序列:()()、(())。
由4对括号组成的合法括号序列一共有多少种?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

''' 思路:进行枚举 位置1为一个括号共5个 () () () () () (()) () () () (()) () ((())) () (()()) 位置1为两个括号共2个 (()) () () (()) (()) 位置1为三个括号共2个 ((())) () (()()) () 位置1为四个括号共5个 (((()))) (()()()) (()(())) ((())()) ((()())) 5+2+2+5=14 '''
#结果:
14

5. 反倍数

【问题描述】
给定三个整数 a, b, c,如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。
请问在 1 至 n 中有多少个反倍数。
【输入格式】
输入的第一行包含一个整数 n。
第二行包含三个整数 a, b, c,相邻两个数之间用一个空格分隔。
【输出格式】
输出一行包含一个整数,表示答案。
【样例输入】
30
2 3 6
【样例输出】
10
【样例说明】
以下这些数满足要求:1, 5, 7, 11, 13, 17, 19, 23, 25, 29。
【评测用例规模与约定】
对于 40% 的评测用例,1 <= n <= 10000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000,1 <= a <= n,1 <= b <= n,1 <= c <= n。

''' 思路1: 一一列举进行比较判断 '''
#实现:
n = int(input())
a,b,c=map(int,input().split())
count = 0
for i in range(1,n+1):
    if i%a!=0 and i%b!=0 and i%c!=0:
        count += 1
print(count)

''' 思路2: 创建一个新列表,如果出现倍数就将其删除 '''
#实现:
n = int(input())
a,b,c=map(int,input().split())
lst = [i for i in range(1,n+1)]
for i in range(1,n+1//min(a,b,c)):
    if i*a in lst:
        lst.remove(i*a)
    if i * b in lst:
        lst.remove(i*b)
    if i * c in lst:
        lst.remove(i*c)
print(len(lst))

6. 凯撒加密

【问题描述】
给定一个单词,请使用凯撒密码将这个单词加密。
凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即a变为d,b变为e,…,w变为z,x变为a,y变为b,z变为c。
例如,lanqiao会变成odqtldr。
【输入格式】
输入一行,包含一个单词,单词中只包含小写英文字母。
【输出格式】
输出一行,表示加密后的密文。
【样例输入】
lanqiao
【样例输出】
odqtldr
【评测用例规模与约定】
对于所有评测用例,单词中的字母个数不超过100。

''' 思路: 充分利用python中ord()和chr()函数; 特别的需要注意‘xyz’的下一个应该是‘abc’ '''
#实现:
str1 = input()
str2 = ''
for i in str1:
    if 'z'>= i >= 'x':
        str2 += chr(ord(i)-23)
    else:
        str2 += chr(ord(i)+3)
print(str2)

在python中,字符串是不可变对象,不能通过下标的方式直接赋值修改。同样的不可变对象还有:数字、字符串和元组。

7. 螺旋

【问题描述】
对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
例如,一个 4 行 5 列的螺旋矩阵如下:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
【输入格式】
输入的第一行包含两个整数 n, m,分别表示螺旋矩阵的行数和列数。
第二行包含两个整数 r, c,表示要求的行号和列号。
【输出格式】
输出一个整数,表示螺旋矩阵中第 r 行第 c 列的元素的值。
【样例输入】
4 5
2 2
【样例输出】
15
【评测用例规模与约定】
对于 30% 的评测用例,2 <= n, m <= 20。
对于 70% 的评测用例,2 <= n, m <= 100。
对于所有评测用例,2 <= n, m <= 1000,1 <= r <= n,1 <= c <= m。

''' 思路: 1.首先创建全空矩阵 2.算出生长步长向量 3.根据生长步长向量判断行走方向 4.填充数字 '''
#实现:
n,m = map(int,input().split())
r,c = map(int,input().split())

def Matrix(n,m,r,c):
    #创建空矩阵
    lst = [[None for i in range(m)] for j in range(n)]
    #print(lst)
    #创建生长步长向量
    a = m
    b = n-1
    remote_lst = []
    while a>=1 and b >=1:
        remote_lst.append(a)
        remote_lst.append(b)
        a -= 1
        b -= 1
    remote_lst.append(a)
    #print(remote_lst)

    #给矩阵赋值数字
    lie,hang,rt,count = -1,0,0,0
    for i in range(1,n*m+1):
        if count == remote_lst[rt]:
            count = 0
            rt += 1
        count += 1

        #转向
        if rt % 4 == 0:
            lie +=1
        elif rt % 4 == 1:
            hang +=1
        elif rt % 4 == 2:
            lie -=1
        elif rt % 4 == 3:
            hang -=1
        lst[hang][lie] = i
    #查看螺旋矩阵
    # for i in range(len(lst)):
    # print(lst[i])
    return lst[r-1][c-1]

print(Matrix(n,m,r,c))

8. 摆动序列

【问题描述】
如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列。即 a[2i]<a[2i-1], a[2i+1]>a[2i]。
小明想知道,长度为 m,每个数都是 1 到 n 之间的正整数的摆动序列一共有多少个。
【输入格式】
输入一行包含两个整数 m,n。
【输出格式】
输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。
【样例输入】
3 4
【样例输出】
14
【样例说明】
以下是符合要求的摆动序列:
2 1 2
2 1 3
2 1 4
3 1 2
3 1 3
3 1 4
3 2 3
3 2 4
4 1 2
4 1 3
4 1 4
4 2 3
4 2 4
4 3 4
【评测用例规模与约定】
对于 20% 的评测用例,1 <= n, m <= 5;
对于 50% 的评测用例,1 <= n, m <= 10;
对于 80% 的评测用例,1 <= n, m <= 100;
对于所有评测用例,1 <= n, m <= 1000。

9. 通电

【问题描述】
2015年,全中国实现了户户通电。作为一名电力建设者,小明正在帮助一带一路上的国家通电。
这一次,小明要帮助 n 个村庄通电,其中 1 号村庄正好可以建立一个发电站,所发的电足够所有村庄使用。
现在,这 n 个村庄之间都没有电线相连,小明主要要做的是架设电线连接这些村庄,使得所有村庄都直接或间接的与发电站相通。
小明测量了所有村庄的位置(坐标)和高度,如果要连接两个村庄,小明需要花费两个村庄之间的坐标距离加上高度差的平方,形式化描述为坐标为 (x_1, y_1) 高度为 h_1 的村庄与坐标为 (x_2, y_2) 高度为 h_2 的村庄之间连接的费用为
sqrt((x_1-x_2)(x_1-x_2)+(y_1-y_2)(y_1-y_2))+(h_1-h_2)*(h_1-h_2)。
在上式中 sqrt 表示取括号内的平方根。请注意括号的位置,高度的计算方式与横纵坐标的计算方式不同。
由于经费有限,请帮助小明计算他至少要花费多少费用才能使这 n 个村庄都通电。
【输入格式】
输入的第一行包含一个整数 n ,表示村庄的数量。
接下来 n 行,每个三个整数 x, y, h,分别表示一个村庄的横、纵坐标和高度,其中第一个村庄可以建立发电站。
【输出格式】
输出一行,包含一个实数,四舍五入保留 2 位小数,表示答案。
【样例输入】
4
1 1 3
9 9 7
8 8 6
4 5 4
【样例输出】
17.41
【评测用例规模与约定】
对于 30% 的评测用例,1 <= n <= 10;
对于 60% 的评测用例,1 <= n <= 100;
对于所有评测用例,1 <= n <= 1000,0 <= x, y, h <= 10000。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100086.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 汉罗塔

    汉罗塔/*汉罗塔问题: 规则:1.每次只能移动一个圆盘   2。圆盘可以插在X,Y和Z中的任一塔座上   3.任何时候都不能将一个较大的圆盘压在较小的圆盘之上。*/#includeintcount=0;voidmove(charx,intn,charz){ ++count; printf(“%d   %c—>%c\n”,n,x,z);}

    2022年10月12日
    0
  • linux下pycharm安装教程_ubuntu激活成功教程pycharm

    linux下pycharm安装教程_ubuntu激活成功教程pycharmlinux版本为redhat8.2已经内置python解释器,所以可直接下载pycharm就可以[root@westos~]#python3如何安装Pycharm官网下载地址根据自己的需求下载社区版或者专业版在新建项目即可,选择已有的python解释器简单操作、设置创建文件快捷键:Alt+Insert进入Pycharm的设置界面ctrl+alt+s设置背景颜色设置编辑器的字体大小和间距…

    2022年8月27日
    0
  • Linux发邮件shell脚本与群发邮件shell脚本

    Linux发邮件shell脚本与群发邮件shell脚本Linux发邮件shell脚本与群发邮件shell脚本说明:因为明天统计疫情健康打卡,需要通知同学完成打卡,最开始是一个人一个人的进行QQ通知,为了方便通知,我利用Linux写了一个shell定时群发邮件提醒脚本,如果大家有需要的可以参考我的方式方法下面我将我进行配置的方法分享给大家1.Linux安装邮件服务因为Linux默认没有安装mail邮件服务,我们将进行安装,输入安装命令等待几秒即可安装成功yuminstallmailx2.配置发送邮件服务即你的邮箱2.1在命令行中输入

    2022年10月20日
    0
  • 解决idea中maven项目的pom文件不会自动下载jar包问题 + 更新不完整依赖命令

    解决idea中maven项目的pom文件不会自动下载jar包问题 + 更新不完整依赖命令不会自动下载jar包idea昨天还在正常使用,结果今天发现pom文件中的依赖不会自动下载了,最后百度找到了解决方案: setting——>maven——>去掉workoffline的勾,问题解决!但是我之前用着还是没有这个问题的,百度发现可能是Intellijideasetting显示出错/或者电脑运行过久出错,在经历几次重启I…

    2022年5月11日
    74
  • java连接MQTT服务器(Springboot整合MQTT)

    java连接MQTT服务器(Springboot整合MQTT)目录一、业务场景二、本文只讲解java连接MQTT服务器进行数据处理一、业务场景硬件采集的数据传入EMQX平台(采用MQTT协议),java通过代码连接MQTT服务器,进行采集数据接收、解析、业务处理、存储入库、数据展示。MQTT是基于发布(Publish)/订阅(Subscribe)模式来进行通信及数据交换的。二、本文只讲解java连接MQTT服务器进行数据处理…

    2022年5月28日
    959
  • selenium+webdriver_python爬虫安装

    selenium+webdriver_python爬虫安装1、下载地址:https://chromedriver.chromium.org/downloads根据谷歌浏览器的版本选择地址,一定要选择对应的版本,选择错误无法运行程序。如果找不到对应的版本,可以把谷歌浏览器更新到最新的版本,然后下载页面第一个程序(最新)2、安装步骤①将下载到的文件解压,应当只有一个EXE文件②将该文件拷贝一份放到谷歌浏览器目录下,找到快捷方式【打开所在目录】即可③将该文件再拷贝一份放到Python编译器目录下如图2所示。图1将文件放到谷歌浏览器目录下图2将文

    2022年9月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号