题目

从标准输入读入一个正奇数 n,在控制台使用星号 * 和空格打印出边长对称的空心菱形图案。

输入格式:一行输入一个正奇数 n,表示菱形的总行数。

输出格式:输出 n 行字符图案,构成空心菱形。

数据范围与约定:3 ≤ n ≤ 29,保证 n 为奇数。

思路与算法

1. 上下对称划分
以中间行 mid = n // 2 为中心。距离中心的垂直距离为 dist = abs(i - mid)。

2. 空心星号位置
前导空格数等于 dist,中间星号只在左右边界打印,内部填充空格。

完整程序

n = int(input())
a = list(map(int, input().split()))
x = int(input())

# 二分查找:要求序列已升序排列
low, high = 0, n - 1
ans = -1
while low <= high:
    mid = (low + high) // 2
    if a[mid] == x:
        ans = mid
        break
    elif a[mid] < x:
        low = mid + 1
    else:
        high = mid - 1

print(ans)

运行示例

输入:

5

输出:

*
 * *
*   *
 * *
  *