打印网格这道题目算是之前打印栅栏的升级版本,在这里我们把栅栏看成两个部分可以重复执行部分 大家可以思考一下这里重复执行的任务是什么。
单独打印部分
再把我们的上面重复执行的部分的任务进行拆分根据题目我们的列数可以对‘+-’和‘| ’这两个字符 起到控制次数的作用,在这里我会用乘法来做字符串的重复 本题还是比较简单
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)
这道题目应该是这三道里面唯一一个难度题目 难度指数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)