蓝桥杯2022 A组 python

news2024/9/22 19:35:44

蓝桥杯2022 A组 python

A组相对于B组就五道题不一样

第一题:裁纸刀

在这里插入图片描述

就先把四个边剪一下,然后先行后列,蛮简单的

# 20行 横着19刀,竖着21*20
print(19+21*20+4)

第三题:质因数个数

在这里插入图片描述

这题我感觉就是跟一个约数个数的模板一样的,改一点点就好了,也没啥好说的,看代码就行

# 任何一个正整数,都可以拆成质因数的乘积,最多只有一个质因数大于根号N

if __name__ == '__main__':
    n = int(input())
    res = 0
    for i in range(2,n+1):  #寻找他的质因数
        if i > n/i: break # i就循环到根号N  
        if n % i == 0:  # 找到的一定是质数,因为约数在之前一定会被前面的质数给消掉
            res += 1
        while n % i == 0: 
            n = n // i
    if n > 1: res += 1
    print(res)

第四题:矩形拼接

在这里插入图片描述

找到规律就很好做了

四边形:三个都有一条长度相同的边、两个有长度相同的边,且另外两条长度边之和等于第三个矩形的一条边

六边形:两个有长度相同的边、两个矩形的各自一条边之和等于第三个矩形的一条边

八边形: 其他

根据以上规律去写,看得多其实有很多重复的。。认真看一下就行

# 四边形:三个都有一条长度相同的边、两个有长度相同的边,且另外两条长度边之和等于第三个矩形的一条边
# 六边形:两个有长度相同的边、两个矩形的各自一条边之和等于第三个矩形的一条边
# 八边形: 其他

def find(A1,A2,A3):
    for i in A1:
        if A2.count(i) >= 1 and A3.count(i) >= 1: return 4
    
    for i in range(2):
        if A2.count(A1[i]) >= 1 and A3.count(A1[i]) == 0:  # 找到A1 和 A2 有相同长度的边
            for j in range(2):
                if A2[j] == A1[i]:
                    for k in range(2):
                        if A1[i ^ 1] + A2[j ^ 1] == A3[k]: return 4
    for i in range(2):
        if A2.count(A1[i]) == 0 and A3.count(A1[i]) >= 0:  # 找到A1 和 A3 有相同长度的边
            for j in range(2):
                if A3[j] == A1[i]:
                    for k in range(2):
                        if A1[i ^ 1] + A3[j ^ 1] == A2[k]: return 4
    
    for j in range(2):
        if A3.count(A2[j]) >= 1 and A1.count(A2[j]) == 0:
            for k in range(2):
                if A2[j] == A3[k]:
                    for i in range(2):
                        if A2[j ^ 1] + A3[k ^ 1] == A1[i] : return 4
## *******************************和上面基本一样,但return 6 不能在return 4 前面,所以我上面把return 6 删了,又复制了一份*********************************************** ##
    for i in range(2):
        if A2.count(A1[i]) >= 1 and A3.count(A1[i]) == 0:  # 找到A1 和 A2 有相同长度的边
            for j in range(2):
                if A2[j] == A1[i]:
                    for k in range(2):
                        if A1[i ^ 1] + A2[j ^ 1] == A3[k]: return 4
                    else : return 6
    for i in range(2):
        if A2.count(A1[i]) == 0 and A3.count(A1[i]) >= 0:  # 找到A1 和 A3 有相同长度的边
            for j in range(2):
                if A3[j] == A1[i]:
                    for k in range(2):
                        if A1[i ^ 1] + A3[j ^ 1] == A2[k]: return 4
                    else : return 6
    
    for j in range(2):
        if A3.count(A2[j]) >= 1 and A1.count(A2[j]) == 0:
            for k in range(2):
                if A2[j] == A3[k]:
                    for i in range(2):
                        if A2[j ^ 1] + A3[k ^ 1] == A1[i] : return 4
                    else: return 6
    for i in A1:
        for j in A2:
            for k in A3:
                if i + j == k or i + k == j or j + k == i: return 6
    return 8


if __name__ == '__main__':
    n = int(input())
    for _ in range(n):
        edge = [int(x) for x in input().split()]
        A1 = edge[0:2]
        A2 = edge[2:4]
        A3 = edge[4:6]
        print(find(A1,A2,A3))

第六题:重新排序

在这里插入图片描述

最开始的sum不用我说,我们需要的是怎么求后面的sum? 就是把每个位置的被求的次序都收集起来,某个位置被求的次数最多,我们就把最大值放到他这个位置上。那么我们只需要求完次序,然后分别对次序数组和原来的A数组排序,分别相乘就好了

代码1

if __name__ == '__main__':
    n = int(input())
    A = [int(x) for x in input().split()]
    s = [0]*(n+1)
    m = int(input())
    C = [0]*(n+1) # 用来存储每个数被查询了几次
    sum0 = 0
    for i in range(m):
        a,b = map(int,input().split())
        for i in range(a-1,b):  # 数组中的下标要-1
            sum0 += A[i]
            C[i] += 1
    A.sort()
    C.sort()
    sum1 = 0
    for i in range(n):
        sum1 += C[i]*A[i]
    print(sum1 - sum0)

这个代码看起来很简单,但是你会发现,for i in range(a-1,b)这个最坏要循环n次,那整体时间复杂度都是O(mn)太大了,我们要想办法如何优化这一块

那么求和我们就想到了前缀和,这样我们就不用遍历所有的去求和了,求次数呢我们也可以用类似的想法,看最终优化后的代码 — 在ACWING上全通过了

if __name__ == '__main__':
    n = int(input())
    A = [int(x) for x in input().split()]
    s = [0]*(n+1)
    for i in range(1,n+1):
        s[i] = s[i-1] + A[i-1]
    m = int(input())
    C = [0]*(n+1) # 用来存储每个数被查询了几次
    sum0 = 0
    for i in range(m):
        a,b = map(int,input().split())
        # for i in range(a-1,b):  # 数组中的下标要-1
        #     sum0 += A[i]
        #     C[i] += 1
        sum0 += (s[b] - s[a-1])
        C[a-1] += 1
        C[b] -=1
    for i in range(1,n):
        C[i] += C[i-1]
    C = C[:n]
    A.sort()
    C.sort()
    sum1 = 0
    for i in range(n):
        sum1 += C[i]*A[i]
    print(sum1 - sum0)

第十题:数的拆分

在这里插入图片描述

这题我感觉还是那个约数个数的模板。。就变一点而已,可能时间复杂度上要考虑? 我这边没有找到题测试,但测试的数据是没问题,蛮简单的我们就直接看代码把

import math
if __name__ == '__main__':
    T = int(input())
    for _ in range(T):
        n = int(input())
        res = [0] * (int(math.sqrt(n))+1)
        for i in range(2,n):
            if i > n/i: break
            while n % i == 0:
                res[i] += 1
                n = n//i
        if n > 1: 
            print('no')
            continue
        if 1 not in res:print('yes')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】Twisted网络编程

Twisted什么是Twisted?为什么使用twisted?Twisted 写TCP通信基本实例- TCP服务端- TCP客户端Twisted的Deferred机制Why Deferred?Deferred TCP-ECHO客户端实现- TCP client为例,什么是Twisted? Twisted是一种非阻塞的网络服务器…

useEffect 依赖项为对象或数组时,引发不断重渲染问题的原因及解法

转载自 https://www.izhaoo.com/2021/11/01/useEffect-object-dependent/背景今天封了个轮子,对组件传入参数生成对应的动画实例,当入参变化时重新渲染新实例。自然而然想到的就是 useEffect 监听 props 依赖了,如:useEffect(() &…

ESD器件(TVS)选型考虑

参考:TOSHIBA《Basics of ESD Protection (TVS) Diodes》①VRWM: Working peak reverse voltage工作峰值反向电压:ESD保护二极管显示非常高的阻抗。高于这个电压,会通过指定大小漏电流。设计的时候,信号的最大出现电压要在这个电压…

Java基础漏洞(六)

巩固Java基础,基于韩顺平老师的课程,Java的封装、继承、多态、super()、this()、重载与重写的区别......,下面我们一点点来巩固练习。 (1)继承 继承细节1:子类无法继承父类的私有 图1 我们定义一个父类f…

Ansys Zemax | 利用 TrueFreeForm 面进行网格自由曲面的优化

在这篇文章中,我们将演示如何使用 OpticStudio 的 TrueFreeForm 面,设计AR/VR设备中的人眼追迹系统(eye-tracking subsystem),这个系统通常位于装置的楔形透镜结构中。此外,为了完成子孔径(sub-…

JSBridge:混合开发中的双向通信[Android、iOSJavaScript]

什么是WebView WebView 是移动端中的一个控件,它为 JS 运行提供了一个沙箱环境。WebView 能够加载指定的 url,拦截页面发出的各种请求等各种页面控制功能,JSB 的实现就依赖于 WebView 暴露的各种接口。 由于历史原因,IOS以8为分界…

【Java AWT 图形界面编程】事件处理机制 ② ( Frame 窗口事件监听器 WindowListener | 代码示例 )

文章目录一、Frame 窗口事件监听器 WindowListener二、Frame 窗口事件监听器 WindowListener 代码示例一、Frame 窗口事件监听器 WindowListener 在 AWT 中 , 为 Frame 窗口 添加 窗口事件监听器 WindowListener , 可以监听窗口的操作 , 如 : 窗口显示 WindowListener#windowO…

leetcode 1626. Best Team With No Conflicts(最佳无冲突团队)

scores数组中是每个队员的得分,ages数组中为对应队员的年龄, 现在要从这个队里挑选出一些队员,使总得分最高, 挑选时年龄大的要比年龄小的score更高(严格大于),才不会产生冲突。 返回最高的得分…

【nestjs+VueJs全栈】- 后端搭建和数据库抽离

先补充一些nestjs的前置知识 控制器 控制器负责处理传入的请求和向客户端返回响应。 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。 为了创建一个基本的控制器…

React 组件基础

文章目录1. React 组件的两种创建方式1 使用函数创建组件2 使用类创建组件3 抽离为独立 JS 文件2. React 事件处理1.事件绑定2 事件对象3. 有状态组件和无状态组件4. 组件中的 state 和 setState1 state的基本使用2 setState()修改状态从 JSX 中抽离事件处理程序5.事件绑定 thi…

Python初学如何逆袭高手?22个万能公式汇总大全

嗨害大家好鸭!我是小熊猫~ 本篇文章共22个万能公式~ 初学者友好~ 源码资料电子书:点击此处跳转文末名片获取 1、一次性进行多个数值的输入 对于数值的输入问题, 是很多笔试题目中经常遇到的问题, 一次性输入多个参数值 , 可以节…

AppiumDesktop学习总结

Appium学习总结 文章目录Appium学习总结一、简介二、环境准备1.下载并配置安卓SDK环境变量2.下载及安装AppiumDesktop3.安装AppiumDesktop4. 启动AppiumDesktop5.安装Python3.x环境6.安装Appium的Python客户端7.安装安卓模拟器8.安装被测APP:9.连接安卓设备三、运行…

NCRE二级 《MS Office高级应用》备考之路

文章目录一、WORD一、易考点二、解题思路二、EXCEL一、易考点二、解题思路三、PPT一、易考点二、解题思路四、其他一、WORD 一、易考点 1.设置页边距、纸张方向、纸张大小、装订线位置,分栏。 2.设置主题、页面边框、添加水印。 3.设置段间距、行间距、特殊格式&…

MySQL从入门到精通(第一篇):MySQL的基本语法及其设计,结合多篇文章

MySQL目录一、数据库入门1. 数据管理技术的三个阶段2. 关系型数据库与非关系型数据库3. 四大非关系型数据库a. 基于列的数据库(column-oriented)b. 键值对存储(Key-Value Stores)c. 文档存储(Document Stores&#xff…

【日志首次上报积分最多】

题目描述 【日志首次上报最多积分】 日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。 如果上报太频繁,会对服务端造成压力;如果上报太晚,会降低用户的体验; 如果一次上报的条数…

【flyway入门及使用】解决生产环境sql更新遗漏

flyway入门及使用 一、简单介绍 flyway开源的数据库版本管理工具 二、为什么要使用flyway 1.自己写的sql没有在全部环境执行 2.别人写的sql没有在全部环境执行 3.有人修改了已经执行过的SQL,期望再次执行 4.需要新增环境做数据迁移 三、flyway是如何工作 1…

雷达流量计的安装方法与应用方向介绍

1、设备介绍 雷达流量计是一种采用微波技术的水位流速探测仪器,结合了成熟的雷达水位计和雷达流速仪的测量技术,主要应用于江河、水库闸口、地下水道管网、灌溉渠道等明渠水位流速测量。该产品可有效地监控水位流速流量变化状态,为监测单位提…

【ThreeJs 初学习】随机三角形的实现方案

随机三角形的实现方案 根据官网的文档整理出一份API文档, 地址是:ThreeJs 官网文档,其目的还是为了方便查阅 下列代码源码地址 上述的截图 就是大致的实现效果。 实现内容 首先我们需要对法向量 以及如何完成一个面有一定的了解,具体了解的内…

Opencv-DNN模块之官方指导:利用DNN模块实现深度学习应用:分类、分割、检测、跟踪等

本文根据 Deep Learning with OpenCV DNN Module: A Definitive Guide 中相关内容进行翻译整理而得,用于今后的学习和工程。 00 前  言 ---   机器视觉研究领域从上个世纪六十年后期就已创立。图像分类和物体检测是计算机视觉领域中的一些最古老的的问题&#x…

CSS - 实现Loading加载动画

Loading加载动画 用CSS都用实现一个loading的加载动画 通过控制 item-loader-container 来实现显示及隐藏 <div class"item-loader-container" id"item-loader-container"><div class"la-ball-running-dots la-2x"><div></…