题目编号:L1-015
分数:15分
语言:Java、Python
题目描述
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝"计算机科学教育周"正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!
输入格式
输入在一行中给出正方形边长 N(3 ≤ N ≤ 20)和组成正方形边的某种字符 C,间隔一个空格。
输出格式
输出由给定字符 C 画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的 50%(四舍五入取整)。
输入样例
10 *
输出样例
**********
**********
**********
**********
**********
解题思路
输入边长 N 和字符 C,输出的行数为 round(N * 0.5),每行输出 N 个字符 C。
关键点:
- 行数 = N / 2 四舍五入取整,即
(N + 1) / 2(整数除法) - 每行输出 N 个字符 C
- Python 的
round()函数进行四舍五入
代码实现
Java 实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
char c = sc.next().charAt(0);
int rows = (n + 1) / 2; // 四舍五入
String line = String.valueOf(c).repeat(n);
for (int i = 0; i < rows; i++) {
System.out.println(line);
}
}
}
Python 实现
line = input().split()
n = int(line[0])
c = line[1]
rows = round(n * 0.5)
for _ in range(rows):
print(c * n)
运行验证
输入:
10 *
行数 = round(10 * 0.5) = 5,每行 10 个 *
Java / Python 输出:
**********
**********
**********
**********
**********
与样例一致,通过验证。
复杂度分析
- 时间复杂度:O(N²),输出每行字符
- 空间复杂度:O(N),每行字符串长度为 N
总结
本题是字符图形输出题,核心在于理解行数的计算方式:行数为列数的 50% 四舍五入取整。Python 中 round(n * 0.5) 即可完成,Java 中可用 (n + 1) / 2 整数除法实现四舍五入效果。