当前位置:   article > 正文

L1-002 打印沙漏 (20 分)

002 打印沙漏 (20 分)

Powered by:NEFU AB-IN

Link

L1-002 打印沙漏 (20 分)

  • 题意

    本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
    所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
    给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

  • 思路

    由于数据只有1000,那么先把表打出来,二分查找小于等于n的最后一个值
    按照题目要求打出来即可

  • 代码

    '''
    Author: NEFU AB-IN
    Date: 2022-04-13 11:35:27
    FilePath: \ACM\GPLT\L1-002.py
    LastEditTime: 2022-04-13 11:35:40
    '''
    from bisect import bisect_right
    
    a = [0, 1]
    i, cnt = 1, 3
    while i <= 1000:
        i = i + 2 * cnt
        a.append(i)
        cnt += 2
    
    n, c = input().split()
    n = int(n)
    id = bisect_right(a, n) - 1
    
    num, tmp = 2 * id - 1, 2 * id - 1
    for i in range(id - 1):
        print(" " * ((tmp - num) // 2) + num * c)
        num -= 2
    
    print(" " * ((tmp - num) // 2) + c)
    
    for i in range(id - 1):
        num += 2
        print(" " * ((tmp - num) // 2) + num * c)
    
    print(n - a[id])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/935706
推荐阅读
相关标签
  

闽ICP备14008679号