python_蓝桥杯刷题记录_笔记_入门3

news2024/11/26 4:21:44

前言

        记录我的解法以及笔记思路,谢谢观看。

题单目录

1.P2141 [NOIP2014 普及组] 珠心算测验

2.P1567 统计天数

3.P1055 [NOIP2008 普及组] ISBN 号码

4.P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

5.P1308 [NOIP2011 普及组] 统计单词数

6.P1047 [NOIP2005 普及组] 校门外的树

7.P1046 [NOIP2005 普及组] 陶陶摘苹果

8.P1553 数字反转(升级版)

9.P1598 垂直柱状图


1.P2141 [NOIP2014 普及组] 珠心算测验

        这一道题我是有参考网上的一个大佬的思路来的,但是那个大佬的代码只有两行,很显然我现在的能力达不到就写成了我自己能够理解的样子。

        那python有一个容器是集合,关于python中集合的定义跟数学其实差不多,第一次的写的时候没有注意到题目中说得加数与被加数要不相同,所以无法通过。

        然后我又开始一直纠结怎么解决,增加了好多判断条件,然后看到大佬直接用集合就可以解决了,所以这个方法一定要记住。

        其次,这个大佬还用到了集合的一个函数方法,就是交集,总之思路真的很绝。

intersection() 方法:

        用于返回两个或更多集合中都包含的元素,即交集。

intersection() 方法语法:

        set.intersection(set1, set2 ... etc)

n = int(input())
l = set(map(int,input().split(' ')))
s = []
count = 0
for i in l:
    for j in l:
        if i!=j:
            s.append(i+j)
s = set(s)
count = len(s.intersection(l))
print(count)

2.P1567 统计天数

循环外层必须再要加一个判断,不然就会有一个测试点过不了。

输入:

2

1 2

输出:

不加外层循环输出的是1,但是其实我们知道结果是2

因为在天数一直都处于增加的状态的时候,到最后一天的时候就直接跳出了循环。并不会执行else。

n = int(input())
l = list(map(int,input().split(' ')))
count = 0
flag = 1
last = 0
for i in l:
    if i > last:
        count += 1
    else:
        if count > flag:
            flag = count
        count = 1
    last = i
if count > flag:
    flag = count
print(flag)

3.P1055 [NOIP2008 普及组] ISBN 号码

 这道题一开始我想着得是用字符串去做,后来发现很不方便,就是在修改字符串的数值方面远不如列表,换用上了列表就方便很多了。

s = list(input())
flag = 0
count = 1
for i in range(len(s)-1):
    if i!=1 and i!=5 and i!=11:
        flag += int(s[i])*count
        count += 1
num = flag%11
if num == 10:
    num = 'X'
if str(num) == s[-1]:
    print('Right')
else:
    s[-1] = str(num)
    for i in s:
        print(i,end='')

4.P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

 这道题就是关于字母转为ascii数字的问题,要用到一个函数。ord函数。可以直接将字符串转为数字。

ord() 函数:

返回对应的 ASCII 数值

l1 = list(input())
l2 = list(input())
result1 = 1
result2 = 1
for i in l1:
    result1 *= (ord(i)-ord('A'))+1
for i in l2:
    result2 *= (ord(i)-ord('A'))+1
if result1%47 == result2%47:
    print('GO')
else:
    print('STAY')

5.P1308 [NOIP2011 普及组] 统计单词数

这道题的解法我是看了一个大佬的代码,因为我自己实在是写不出来,大佬的思路简直就是我无法想到的,非常值得学习。大佬还贴心写出来了注释,很好看懂。

s1=input()#输入要查询的单词
s1=s1.upper()#将单词转成大写
x=len(s1)#s1字符串的长度
s2=input()#输入文章
s3=[]#s3每次提取文章的一个单词
y=len(s2)#s2字符串长度
sum=0#sum记录单词出现在文章中的次数
begin=-1#begin记录单词第一次出现在文章中的位置
for i in range(y):
    if(s2[i]!=' '):
        s3.append(s2[i].upper())#将一个完整的单词放入s3中
    else:
        if(list(s1)==s3):#比较单词和s3所储存的单词是否相同
            sum+=1#如果相同次数加一
            if(begin==-1):#首次出现特定单词
                begin=i-x#首次出现的位置
        s3.clear()#清空准备下一个单词
if(sum>0):
    print(sum, begin)
else:
    print(-1)#未查询到输出-1

6.P1047 [NOIP2005 普及组] 校门外的树

 这道题就是运用了集合中元素的互异性。

l,m = map(int,input().split(' '))
a = []
for i in range(m):
    u,v = map(int,input().split(' '))
    for i in range(u,v+1):
        a.append(i)
a = set(a)
print(f'{l - len(a)+1}')

7.P1046 [NOIP2005 普及组] 陶陶摘苹果

l = list(input().split(' '))
h = int(input())
count = 0
for i in l:
    if h+30 >= int(i):
        count += 1
print(count)

8.P1553 数字反转(升级版)

        这道题写出100分实在是太难了,在下载了洛谷提供的多次数据之后终于全部 AC,因为情况很多,所以必须得考虑得/十分仔细。其实这道题的思路就是比较简单的,分不同情况进行处理,但是本质上都是对整数的处理。最难的情况是小数,因为在数字进行反转的时候0不能在开头,对于小数点的前一部分的反转,直接转变为Int之后就不用考虑那些0,但是对于小数点后面的数字就比较麻烦,这个时候就需要重新寻找pos的数值。但是这个时候我们必须考虑到如果小数点的右边只有一个0,按照我的那个方法是会报错的,所以我加了一个try语法就解决了。

find函数:

如果包含子字符串返回开始的索引值,否则返回-1。

s = input()
if '.' in s:
    pos = s.find('.')
    s1 = ''
    s2 = ''
    s3 = ''
    for i in range(0,pos):
        s1 +=s[pos-i-1]
    print(int(s1),end='')
    print('.',end='')
    try:
        for i in range(pos+1,len(s)):
            if s[i] != '0':
                pos2 = i
                break
        for j in range(len(s)-1,pos2-1,-1):
            s3 += s[j]
        print(int(s3))
    except:
        print("0")
elif '/' in s:
    pos = s.find('/')
    s1 = ''
    s2 = ''
    for i in range(0, pos):
        s1 += s[pos - i - 1]
    print(int(s1),end='')
    print('/', end='')
    for j in range(len(s) - 1, pos, -1):
        s2 += s[j]
    print(int(s2))
elif '%' in s:
    pos = s.find('%')
    s1 = ''
    for i in range(0, pos):
        s1 += s[pos - i - 1]
    print(int(s1), end='')
    print('%', end='')
else:
    s1 = ''
    for i in range(0,len(s)):
        s1 += s[len(s)-i-1]
    print(int(s1))

9.P1598 垂直柱状图

         简单来说一下这道题我做的思路,首先我们要算出26个字母出现的次数,然后存入一个列表,仔细观察打印的格式,我们需要关注打印多少行是由什么决定的,最后我们发现,打印的行数与出现次数的最大值有关,于是我们通过找到出现次数的最大值来决定打印的行数。接着就是如何打印出格式出来,这个就比较简单就是次数问题,那需要注意的就是最后一个打印出来的没有空格。

chr函数:

返回值是当前整数对应的 ASCII 字符。

ls = ''
for i in range(4):
    s = input()
    ls += s.replace(' ','')
ls = ls.replace('.','')
ls = ls.replace('!','')
var = 'A'
l = []
for i in range(26):
    temp = chr(ord(var) + i)
    num = ls.count(temp)
    l.append(num)
Max = max(l)
for i in range(Max):
    for j in range(len(l)):
        if l[j] >= (Max-i):
            if j != len(l)-1:
                print("*",end=' ')
            else:
                print("*")
        else:
            if j != len(l) - 1:
                print(" ", end=' ')
            else:
                print(" ")

for i in range(26):
    if i != 25:
        print(f'{chr(ord(var)+i)}',end=' ')
    else:
        print(f'{chr(ord(var) + i)}')

10.总结

继续加油!!!!!

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

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

相关文章

应急响应事件处置指南

注意:以下的事件处置类型是常见的,但安全威胁不断演化,因此可能需要根据具体情况进行调整。 1 Webshell类 1.1常见Webshell类型 1.1.1 一句话木马 特征: 一句话木马代码简短,通常只有一行代码,使用灵活…

【大厂AI课学习笔记】1.4 算法的进步(1)

2006年以来,以深度学习为代表的机器学习算法的发展,启发了人工智能的发展。 MORE: 自2006年以来,深度学习成为了机器学习领域的一个重要分支,引领了人工智能的飞速发展。作为人工智能专家,我将阐述这一时期…

J-Link:STM32使用J-LINK烧录程序,其他MCU也通用

说明:本文记录使用J-LINK烧录STM32程序的过程。 1. J-LINK驱动、软件下载 1、首先拥有硬件J-Link烧录器。 2、安装J-Link驱动程序SEGGER 下载地址如下 https://www.segger.com 直接下载就可以了。 2.如何使用J-LINK向STM32烧写程序 1、安装好以后打开J-LINK Fl…

废品上门回收小程序搭建全过程

随着人们对环境保护意识的不断增强,废品回收成为了一项重要的社会活动。为了方便废品回收的顾客和回收者之间的联系,废品上门回收小程序成为了一种流行的解决方案。然而,如何选择一款合适的废品上门回收小程序搭建平台呢?下面将为…

网络协议与攻击模拟_13缓存DNS与DNS报文

一、缓存DNS服务器 1、引入缓存DNS 缓存域名服务器需要与外网连接 一台windows作为Client 一台Windows server作为缓存DNS 桥接网络 DHCP自动获取IP地址 Client 192.168.183.133 Windows server 192.168.183.138 ipconfig /all查看下Client的DNS,设置让Cl…

【论文阅读笔记】Advances in 3D Generation: A Survey

Advances in 3D Generation: A Survey 挖个坑,近期填完摘要 time:2024年1月31日 paper:arxiv 机构:腾讯 挖个坑,近期填完 摘要 生成 3D 模型位于计算机图形学的核心,一直是几十年研究的重点。随着高级神经…

深入了解c语言字符串 2

深入了解c语言字符串 2 一 使用 scanf进行字符串的输入:1.1输入单词(不包含空格):1.2 输入带空格的整行文本:1.3 处理输入缓冲区:1.4 注意安全性: 二 使用 printf 字符串的输出:三 输…

数据结构之动态查找表

数据结构之动态查找表 1、二叉排序树1.1、二排序树的定义1.2、二叉排序树的查找过程1.3、在二叉排序树中插入结点的操作1.4、在二叉排序树中删除结点的操作 2、平衡二叉树2.1、平衡二叉树上的插入操作2.2、平衡二叉树上的删除操作 3、B_树 数据结构是程序设计的重要基础&#x…

js新增的操作元素类名的方法

Element.classList是一个只读属性,返回一个元素 class 属性的动态 DOMTokenList 集合。这可以用于操作 class 集合。 尽管 classList 属性自身是只读的,但是你可以使用 add()、remove()、replace() 和 toggle() 方法修改其关联的 DOMTokenList。 兼容性…

移动机器人激光SLAM导航(二):运动控制与传感器篇

参考引用 机器人工匠阿杰wpr_simulation 1. 机器人运动控制 1.1 测试环境安装 wpr_simulation 安装$ mkdir -p catkin_ws/src $ cd catkin_ws/src $ git clone https://github.com/6-robot/wpr_simulation.git $ cd wpr_simulation/scripts/ $ ./install_for_melodic.sh # 自…

【2023地理设计组一等奖】基于机器学习的地下水仿真与时空分析

作品介绍 1 设计思想 1.1 作品背景 华北平原是我国最重要的粮棉产地之一,然而近年来农业的低效用水以及过度压采正逐步加剧其地下水资源的紧张性,为经济可持续发展带来重大风险。而地下水动态变化与人为干预、全球气候波动呈现出高度相关性,因此,地下水的仿真模拟对保障粮…

使用阿里云的IDaaS实现知行之桥EDI系统的单点登录

,在开始测试之前,需要确定用哪个信息作为“登陆用户的ID字段”。 这个字段用来在完成SSO登陆之后,用哪个信息将阿里云IDaaS的用户和知行之桥EDI系统的用户做对应。这里我们使用了 phonenumber 这个自定义属性。需要在阿里云做如下配置&#x…

Qt实现类似ToDesk顶层窗口 不规则按钮

先看效果: 在进行多进程开发时,可能会遇到需要进行全局弹窗的需求。 因为平时会使用ToDesk进行远程桌面控制,在电脑被控时,ToDesk会在右下角进行一个顶层窗口的提示,效果如下: 其实要实现顶层窗口&#xf…

openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c

文章目录 openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c概述学到的知识点笔记PEM证书可以拼接实验 pkcs12 - pkwrite.c用win10的证书管理器安装P12证书是成功的END openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c 概述 openssl3.2 - 官方demo学习 - 索引贴 上次PKCS12的…

【Qt】Json在Qt中的使用

Json JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于互联网应用程序之间的数据传输。JSON基于JavaScript中的对象语法,但它是独立于语言的,因此在许多编程语言中都有对JSON的解析和生成支持。…

[opencvsharp]C#基于Fast算法实现角点检测

角点检测算法有很多,比如Harris角点检测、Shi-Tomas算法、sift算法、SURF算法、ORB算法、BRIEF算法、Fast算法等,今天我们使用C#的opencvsharp库实现Fast角点检测 【算法介绍】 fast算法 Fast(全称Features from accelerated segment test)是一种用于角…

集合问题(并查集)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例1: 输入 4 5 9 2 3 4 5 输出 YES 0 0 1 1 样例2: 输入 3 3 4 1 2 4 输出 NO 思路: 这道题关键点在于。 当集合中有一个元素均存在于集合 A 和集合 B 的时…

(杂项笔记)腾讯文档设置隔行换色

文档小技巧 一、在表格工具栏中选择“数据”栏二、选择新建条件格式三、进行以下设置1. 应用范围2. 条件设置3. 这是表格颜色 四、样例展示1. 隔行换色2. 隔3行换色 最近在使用某家的文档进行多人协同办公,遇到的一些小技巧,在这里分享给大家&#xff1b…

无广告iOS获取设备UDID 简单方便快捷

ps: 为啥不用蒲公英了,就是因为有广告了,获取个UDID还安装游戏,真恶心?,所以找了新的获取UDID都方法,网页直接获取就可以,不会安装软件。 UDID 是一种 iOS 设备的特殊识别码。除序号之外&…

Java多线程--解决单例模式中的懒汉式的线程安全问题

文章目录 一、单例设计模式的线程安全问题(1)饿汉式没有线程安全问题(2)懒汉式线程安全问题1、案例2、方式1-同步方法3、方式2-同步代码块4、优化 二、代码(1)实现线程安全的懒汉式(2&#xff0…