D


私信TA

用户名:ALS1111

访问量:22109

签 名:

等  级
排  名 55
经  验 11377
参赛次数 0
文章发表 132
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:

从题目中我们知道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逆序。

③按要求生成一个直角梯形的矩阵,初始用‘.’进行填充。

④按照规律填充对应位的数字即可。

20200313213427_57858.png


注意事项:

参考代码:

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 人评分

  评论区

  • «
  • »