原题链接:蓝桥杯2018年第九届真题-等腰三角形
解题思路:
从题目中我们知道0~9每个数字占一位。
①先生成1~1000的数字字符串,('123456789101112131415161718192021......'),这里记为A。
②我们可以将三条边分开处理,通过观察图像规律:
左边所需要的字符串长度为n位,A中的下标对应为[0,n-1]。
底边所需要的字符串长度为2n-2位,A中的下标对应为[n,3n-3]。
右边所需要的字符串长度为n-2位,A中的下标对应为[3n-2,4n-5]。
因此,我们可以分别将三条边需要的数字字符串从A中取出来,分别存放在字符串A1,A2,A3中,为了后续方便,我们将A3逆序。
③按要求生成一个直角梯形的矩阵,初始用‘.’进行填充。
④按照规律填充对应位的数字即可。
注意事项:
参考代码:
n = int(input().strip()) A= '' for i in range(1,1000): A = A + str(i) A1 = A[:n] #左边数字 A2 = A[n:3*n-2] #底边数字 temp = A[3*n-2:4*n-4] A3 = temp[::-1] #右边数字 R = [['.' for j in range(n+i)] for i in range(n)] #初始化矩阵 for i in range(n): #填充左边 R[i][n-1-i] = A1[i] for i in range(2*n-2): #填充底部 R[n-1][i+1] = A2[i] for i in range(n-2): #填充右边 R[1+i][n+i] = A3[i] for i in range(n): for j in range(n+i): print(R[i][j],end='') print()
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复