蓝桥杯 备赛(6)

第一题    上海市计算机学 会竞赛平台 | YACS

打印网格这道题目算是之前打印栅栏的升级版本,在这里我们把栅栏看成两个部分可以重复执行部分  大家可以思考一下这里重复执行的任务是什么。

单独打印部分

再把我们的上面重复执行的部分的任务进行拆分根据题目我们的列数可以对‘+-’和‘| ’这两个字符 起到控制次数的作用,在这里我会用乘法来做字符串的重复 本题还是比较简单

n,m=map(int,input().split())
#获得行数和列数
for i in range(n):
    print("+-" * m + '+')
    print('| ' * m +'|')

print("+-"*m + '+')

第二题    上海市计算机学会竞赛平台 | YACS第二题贴邮票,他要的结果是最少用多少张邮票可以解决问题,那换句话来说可以用大面额的邮票就尽可能的用大面额的邮票,那我们的程序步骤将会是 按照面额大小顺序挨个整除,取余数

n=int(input())
s=0 #初始化票数
s+= (n//20) #最大面额
n%=20
s+= (n//10)#以此面额
n%=10
s+= (n//5)
n%=5
s+=n
print(s)

第三题   上海市计算机学会竞赛平台 | YACS

这道题目应该是这三道里面唯一一个难度题目 难度指数1.5满分100分

我们通过 for 循环和索引值的知识点,把 列表中数字拿过来进行配对 如果成功就给s+1

因为两个数字配对会有重复,所以把结果除以二

n=int(input())
list1=list(map(int,input().split()))
s=0
for i in range(n):
    if i+1 == list1[list1[i]-1]:
        s+=1
print(s//2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值