蓝桥杯练习之用Python解手算题

编译环境:Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
代码用notepad++写的
备注:本文留作作者自用,如有错误敬请指出

蓝桥杯真题:平方和(2019 年省赛)

【题目描述】
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10 至 32、39和 40,共 28个,他们的和是 574,平方和是 14362。
注意,平方和是指将每个数分别平方后求和。
请问,在 1到 2019中,所有这样的数的平方和是多少?
【解题思路】
用 Python,不用任何算法,直接把数字看成字符来统计。
【参考代码】

#写这段代码时我刚学一天Python,大家可以自行优化
num=[]
cnt=0  #顺便计数了
sum=0  #平方和
for n in range(1,2020):
    tem='%d' %n #将数字转变为字符串
    #下一行太长了,最后加\就可以换行了
    if (tem.find('2')>=0) or (tem.find('0')>=0)\
      or (tem.find('1')>=0) or(tem.find('9')>=0):
        num.append(n**2)
        cnt=cnt+1
        continue
print(cnt)
for n in num:
    sum+=n
print(sum)    

【答案】2658417853

蓝桥杯真题:数列求值(2019 年省赛)

【题目描述】
给定数列 1, 1, 1, 3, 5, 9, 17,从第 4 项开始,每项都是前 3项的和。
求第 20190324项的最后 4位数字。
【参考代码】

#这个算法要等待一点时间
num=[1,1,1]
use=[1,1,1]
for n in range(3,20190324):
    tem=sum(use)
    del use[0]
    if tem>=10000:#因为只求后四位数字,所以前面的可以舍去,减少计算量
       tem%=10000
    use.append(tem)
    num.append(tem)
print(num[-1])#输出列表num的最后一项,即第20190324项的最后 4位数字

【答案】4659

蓝桥杯真题:卡片问题(2021年省赛)

【题目描述】
小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。小蓝想知道自己能从 1 拼到多少。例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1 拼到多少?提示:建议使用计算机编程解决问题。
【参考代码】

num=[0,0,0,0,0,0,0,0,0,0]
n=1
flag=0
while n:
   tem='%d' %n
   for m in tem:
      t=int(m)
      num[t]= num[t]+1
      if num[t]>=2021:#注意边界
        print("n=" +tem)
        flag=1
        break
   if flag>0:
       break
   n=n+1

【答案】3181

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值