题目
从标准输入读入一个正奇数 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输出:
*
* *
* *
* *
*