【蓝桥杯国赛真题笔记】Python(1)

简介: 【蓝桥杯国赛真题笔记】Python

1.天干地支(填空题)


题目描述


古代中国使用天干地支来记录当前的年份。


天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。


地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。


将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。


20202020 年是庚子年。


每过一年,天干和地支都会移动到下一个。例如 20212021 年是辛丑年。


每过 6060 年,天干会循环 66 轮,地支会循环 55 轮,所以天干地支纪年每 6060 年轮回一次。例如 19001900 年,19601960 年,20202020 年都是庚子年。


给定一个公元纪年的年份,请输出这一年的天干地支年份。


image.png


问题分析:考察取余 将下标和天干(地支)对应起来


用一个列表存起来 由于数组的下标是从0开始,这里对应起来可能会卡住一下


解决办法:以天干(下标从0到9)为例子,比如输入n=2027,由于一开始2020对应的下标是6(gengzi),经过7年后,数一下,会发现,2027对应的下标应该是3,


如果直接(7)%9会发现等于2  不符合我们的预期。


想到了一个办法,把下标0—9看作1—10,因而只需要(#变化的年数)%10-1即可


细节的地方:


变化的年数是负数怎么办?即导致下标是负数怎么办?


emm可以找几个比2020小的试一下,能过就放上去。(因为数学规律通常是简洁的,不会想得那么复杂!!)


AC代码:


a=['jia',
   'yi',
   'bing',
   'ding',
   'wu',
   'ji',
   'geng',
   'xin',
   'ren',
   'gui']
b=['zi',
   'chou',
   'yin',
   'mao',
   'chen',
   'si',
   'wu',
   'wei',
   'shen',
   'you',
   'xu',
   'hai']
n=int(input())
print(a[(7+n-2020)%10-1]+b[(1+n-2020)%12-1])


2.求值(填空题)


image.png


这道题和【蓝桥杯国赛真题】备战24天 Python_Py小郑的博客-CSDN博客


我之前写的文章里面的:阶乘约数 道理差不多


对于这道题我的思考过程是,第一步肯定想到暴力枚举,但是由于暴力枚举的上限关系到数组m的大小,m[i]表示质数i出现的次数,(i如果是偶数,我们初始化为1了,至于为什么在上面那个博客里面那道题详细说了),当上限很大的时候,m往往过大,时间过长,方法不合适。 但是有了先前那道题的经验,已经有了100以内的任意数字其的约数个数,把他们打印出来,即执行下面这段语句,观察一下,发现如果取两个数字,他们互质的话,那么,


for i in range(1,101):

   print(i,find(i))

#find(i)在下面有说

他们的乘积对应的约数个数就是两个数字约数个数的乘积。


因而,有了1-100对应的约数,我们可以进行迭代,详细点说:


创建一个数组p=[] ,p的每个元素以列表出现,每个列表有两个数字,分别存特定数字和特定数字对应的约数个数,即比如p=[[2,2],[7,2]],可以获知2的约数有两个,7的约数有两个,由于2和7互质,那么可以迭代生成[14,4]


由于迭代多次不大可能实现,观察经过第一次迭代,发现已经有符合条件的(刚好是答案45360),那么只需要在(1,45260)验证即可,这是我的思路:做题经验+观察+猜测验证


因为是填空题嘛hh,结果发现在(1,45360)只有45360这一个数,那么就是他了


AC代码


#把n分解为多个质数乘机(a1+1)(a2+1)..(an+1)==100退出
def find(n):
    s=1
    m=[1]*101#m[i]:质数i被分解的个数
    j=2
    while j<=n:
        if n%j==0:
            m[j]+=1
            n//=j
        else:
            j+=1
    for i in m:
        s*=i
    return s#返回约数个数
p=[]
for i in range(1,101):
    if find(i)%5==0 or find(i)%2==0:
        p.append([i,find(i)])
def gcd(a,b):
    while b:
        a,b=b,a%b
    return a
for i in range(1,len(p)):
    if gcd(p[i][0],p[i-1][0])==1:
        key=p[i][0]*p[i-1][0]
        val=p[i][1]*p[i-1][1]
        if [key,val] not in p:
            p.append([key,val])
St=float('inf')#St
for i in range(len(p)):
    for j in range(i+1,len(p)):
        if gcd(p[i][0],p[j][0])==1:
            if p[i][1]*p[j][1]==100:
                St=min(St,p[i][0]*p[j][0])
                print(p[i],p[j])
目录
相关文章
|
1月前
|
Python
【python】】Python 的 queue 模块使用笔记
【python】】Python 的 queue 模块使用笔记
24 0
|
1月前
|
Python
Python笔记9 类
本文是作者的Python复习笔记第九篇,深入探讨了Python中的类和面向对象编程。文中详细解释了如何创建类、实例化对象、定义和使用类方法,以及类的继承、重写方法和嵌套类的使用。此外,还讨论了类模块的导入和导出,包括处理类之间的依赖关系。通过示例代码,文章展示了类在Python编程中的应用和重要性。
23 0
|
1月前
|
存储 Python
Python笔记8 函数
本文是作者的Python复习笔记第八篇,全面介绍了Python中的函数定义与使用,包括函数的参数传递(位置参数、关键字参数、默认参数、列表参数、任意数量参数和关键字参数)、函数的返回值以及如何创建和调用函数库(模块),并提供了丰富的示例代码。
23 0
|
1月前
|
Python
Python笔记7 输入与输出
本文是作者的Python复习笔记第七篇,主要介绍了Python中的输入与输出操作。文中详细解释了如何使用input()函数进行用户输入,包括添加多行字符串提示和字符串转列表输入的方法,以及如何使用print()函数进行格式化输出,提供了多种格式化字符串的示例。
25 0
|
1月前
|
存储 Python
Python笔记6 字典
本文是作者的Python复习笔记第六篇,专注于Python中的字典(dictionary)数据结构。文中详细解释了字典的创建和基本操作,包括访问、修改、添加和删除键值对的方法。此外,还介绍了如何遍历字典的键值对、键或值,并探讨了字典的高级用法,如字典列表、在字典中存储列表以及字典的嵌套使用。文中通过示例代码演示了字典在实际编程中的应用,帮助读者更好地理解和掌握字典这一重要的数据结构。
36 0
|
1月前
|
Python
Python笔记5 条件判断
本文是作者的Python复习笔记第五篇,主要介绍了Python中的条件判断语句。文中详细解释了if、if-else以及if-elif-else结构的用法,包括如何使用等于(==)和不等于(!=)操作符进行条件判断,如何通过and和or进行多条件判断,以及如何使用in和not in关键字检查列表中是否存在特定值。此外,文中还强调了在某些情况下省略else部分可以避免执行不合适的数据导致的命令执行,使代码更加清晰。
22 0
|
1月前
|
Python
Python笔记4 循环
本文是作者的Python复习笔记第四篇,专注于Python中的循环概念。文中详细解释了for循环和while循环的使用方法,包括如何通过循环遍历列表、使用range()函数和list()函数创建列表、列表解析法、while循环的基本使用、使用break和continue语句控制循环流程,以及如何为循环设置状态标志。此外,还提供了多个示例代码来演示循环在实际编程中的应用。
23 0
|
人工智能 Python
【蓝桥杯国赛真题笔记】Python(2)
【蓝桥杯国赛真题笔记】Python
249 0
【蓝桥杯国赛真题笔记】Python(2)
|
5天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从零基础到实战应用
【9月更文挑战第15天】本文将引导读者从零开始学习Python编程,通过简单易懂的语言和实例,帮助初学者掌握Python的基本语法和常用库,最终实现一个简单的实战项目。文章结构清晰,分为基础知识、进阶技巧和实战应用三个部分,逐步深入,让读者在学习过程中不断积累经验,提高编程能力。
|
1天前
|
数据可视化 Python
Python编程中的数据可视化技术
【9月更文挑战第19天】在数据驱动的时代,将复杂的数据集转化为直观易懂的视觉表达至关重要。本文将深入探索Python中的数据可视化库,如Matplotlib和Seaborn,并指导读者如何运用这些工具来揭示数据背后的模式和趋势。文章不仅会介绍基础图表的绘制方法,还将讨论高级技巧以提升图表的信息丰富度和吸引力。