第十一届蓝桥杯大赛第二次模拟(软件类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。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • DAVINCI DM365-DM368开发攻略——开发环境搭建(DVSDK4.02) 适用于DM3730[通俗易懂]

    DAVINCI DM365-DM368开发攻略——开发环境搭建(DVSDK4.02) 适用于DM3730[通俗易懂]DAVINCIDM365-DM368开发攻略——开发环境搭建(DVSDK4.02)标签:开发环境 搭建 dvsdk DM368 DM365原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zjbintsystem.blog.51cto.com/964211/621435第一节、 技术开发环

  • C语言:strcmp()—字符串比较

    C语言:strcmp()—字符串比较C语言:strcmp()—字符串比较函数原型、参数、功能和使用方法。

    2022年10月21日
  • Oracle列转行函数LISTAGG() WITHIN GROUP ()的使用方法

    Oracle列转行函数LISTAGG() WITHIN GROUP ()的使用方法前言:最近在写一些比较复杂的SQL,是一些统计分析类的,动不动就三四百行,也是首次写那么长的SQL,有用到一些奇形怪状的SQL函数,在这里结合网上的例子做一些笔记,以后用到不记得用法可以翻出来看!1.基础用法:LISTAGG(XXX,XXX)WITHINGROUP(ORDERBYXXX),就像聚合函数一样,通过Groupby语句,把每个Group的一个字段,拼接起来…

    2022年10月24日
  • intellij idea快速生成main方法、for循环、out输出「建议收藏」

    intellij idea快速生成main方法、for循环、out输出「建议收藏」点击这里查看&lt;intellijidea使用教程汇总篇&gt;1、System.out.println()输入sout,按下enter键,生成System.out.println()方法.sout—&gt;soutv=System.out.println("变量名 = " + 变量)soutp—&gt;System.out.println("")2、public…

  • 一个Django项目:搭建基本自动化运维平台[通俗易懂]

    一个Django项目:搭建基本自动化运维平台[通俗易懂]之前做的一个Python项目,采用了Django的MTV框架搭建,实现的是主机的CMDB平台与作业平台基本功能。基本的搭建步骤:1.确定平台的基本功能有哪些:实现主机的自动添加,删除,修改;实现所管理主机配置信息的监控;实现指定对象的批量管理2.根据上面的功能,设计对应的页面方式,布局,规划如何交互的。:如何执行命令与显示3.根据上面的规划,拟定需要怎样的架构,分别需要几个模块(M…

  • Wireshark网络流量分析工具

    Wireshark网络流量分析工具Wireshark网络流量分析工具安装使用yum安装wireshark遇到的问题http://blog.chinaunix.net/uid-11828817-id-2816828.htmlrpm-qawireshark#yuminstall-ywiresharkwireshark-gnome…

发表回复

您的电子邮箱地址不会被公开。

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