1017.打印沙漏

# 打印沙漏(20)
# 题目描述
# 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“ * ”,要求按下列格式打印
# *****
#  ***
#   *
#  ***
# *****
# 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递
# 增;首尾符号数相等。
# 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
# 输入描述:
# 输入在一行给出1个正整数N( <= 1000)和一个符号,中间以空格分隔。
# 输出描述:
# 首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
# 输入例子:
# 19 *
# 输出例子:
# *****
#  ***
#   *
#  ***
# *****
# 2
a = input().split()
b = int(a[0])
str1 = a[1]
i = 1
c = 1
while True:
    if c <= b:
        i += 1
        c += 2*(2*i - 1)
    else:
        c -= 2*(2*i - 1)
        i -= 1
        break
d = b - c
for j in range(0 ,i):
    for k in range(0,j):
        print(" ",end='')
    for l in range(0,2*(i-j)-1):
        print(str1,end='')
    print()
for j in range(1,i):
    for k in range(1,i-j):
        print(" ", end='')
    for l in range(0, 2 * j + 1):
        print(str1, end='')
    print()
print(d)

猜你喜欢

转载自blog.csdn.net/luslin/article/details/81711623