蓝桥杯赛前真题 Python组 1、2

这题做过的,1是最先用完的,所以统计1到稍大的一个数之间,哪个数正好用完2021个1

count = 0
ans = ''
for i in range(10000):
    tmp = str(i)
    count = count + tmp.count('1')
    if count == 2021:
        print(i)
        break
    if count>2021:
        print(i-1)
        break
    
for i in range(1,3182):
    ans = ans + str(i)

print(ans.count('1'))

答案3181


暴力遍历所有的点,round(4)的目的是防止算截距时出现的差距,比如1.6666666667和1.666666668它认为是两个不同的截距。出现这种差距的原因主要是因为我算截距用了上面得到的斜率k。

两种计算截距方式:

(x2 * y1 - x1 * y2) / (x2 - x1)

0.5*(y1+y2) - 0.5*k*(x1+x2)

第一种更好,但是难以记忆。第二种简单但是会有误差。

X = []
Y = []
for i in range(20):
    X.append(i)
for i in range(21):
    Y.append(i)

ans=set()

def k(x1,x2,y1,y2):
    if x1 == x2:
        return
    tmp = ((y1-y2)/(x1-x2))
    
    b = 0.5*(y1+y2) - 0.5*tmp*(x1+x2)
    b=round(b,4)

    
    ans.add((tmp,b))



for i in range(20):
    for j in range(21):
        for x in range(20):
            for y in range(21):
                k(i,x,j,y)
                


print(len(ans)+20)

                
        

答案:40257


思路:先求因数,然后在因数集合中三次遍历。

为什么因子是两个两个获取,而最终三次遍历得到结果呢,这是我一开始遇到的疑惑。

以2*3*4 = 24为例。

我先获得24的所有因子,1,2,3,4,6,8,12,24。

你会发现对于一个数n,它的双因子集合为A。那么数n的三因子集合B是A的子集。

n = 2021041820210418
fac = []
for i in range(1,int(n**0.5)+1):
    if n%i == 0:
        #print(i)
        fac.append(i)
        fac.append(n//i)

ans = set()
for i in fac:
    for j in fac:
        for x in fac:
            if i*j*x == n:
                ans.add((i,j,x))
                
print(ans)
print(len(ans))

 答案:2430

以下是一份可能的蓝桥杯赛前训练计划: 1. 熟悉考试内容和题型:了解蓝桥杯考试的内容和题型,包括编程语言、数据结构与算法、计算机基础知识和实践能力等方面的内容,并准备相关资料和练习题目。 2. 制定学习计划:根据自己的水平和时间安排,制定一份具体的学习计划,包括每天的学习目标、练习时间和计划完成时间等,以保证充分利用时间进行学习和练习。 3. 提高编程能力:进行编程练习,提高编程能力,特别是数据结构和算法的实践能力。可以参加在线编程竞赛、练习题目和刷题等方式来提高编程能力。 4. 提高计算机基础知识:学习计算机基础知识,包括计算机成原理、操作系统、计算机网络、数据库等方面的知识,以提高程序的效率和优化能力。 5. 实践能力:进行实践练习,包括操作系统和网络配置、数据库设计和开发、Web开发等方面的实践,以提高实践能力和解决问题的能力。 6. 团队协作:参加团队协作项目,锻炼团队合作和沟通能力,同时学习项目管理和软件开发流程等相关知识。 7. 模拟考试:进行模拟考试,以检验自己的学习成果和考试准备情况,同时找出自己的弱点和不足,加以改进和提高。 8. 调整状态:保持良好的身体状态和心态,保证充足的睡眠和饮食,调整好心态,保持积极向上的心态。 以上是一份可能的蓝桥杯赛前训练计划,具体的训练计划需要根据个人情况和水平来制定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值