1 条题解
-
0
自动搬运
来自洛谷,原作者为

chen_zhe
Aya 敲可爱的~搬运于
2025-08-24 21:15:43,当前版本为作者最后更新于2023-11-13 20:16:14,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
Source & Knowledge
2023 年 11 月语言月赛,由洛谷网校入门计划/基础计划提供。
考察循环嵌套结构、质数的定义。
文字题解
这道题目是一道典型的输出字符画像的题目,考察了循环嵌套结构。
首先,我们外层循环变量 控制行数,内层循环控制列数。但本题与寻常的题目并不一样——本题要求每一列输出 个非空白字符,而且计算中和列数也是有关系的。因此内层循环需要定义两个变量进行循环,一个是 ——表示输出了第几个字母,一个是 ——表示这是第几列。
在这里,一个常见的问题是,如何获取当前本应填充的字母的 ASCII 码?假设我们用变量
ch存储当前本应填充的字母,那么ch在进行算术运算时,其自动代入的就是ch这个字母的 ASCII 码值。例如说:int x=k+ch,就表达出了当前列数加上当前本应填充的字母的 ASCII 码的含义。由于大写字母的 ASCII 码值连续,因此我们可以直接使用char ch='A'+i-1的方式,获取第 行开头的字母是哪一个。下一个关键点是质数。让我们回顾一下质数的定义:
一个质数是指,不能被 和自身以外的正整数所能整除的正整数。
根据这个定义,对于一个正整数 ,我们总能写出一个循环语句去判断其是否是质数:
bool flag=true;//如果 flag 为 true,则 x 是质数,否则 x 不是质数。 for (int j=2;j<=x-1;j++) { if (x%j==0) //从 2 到 j-1,一个一个试除 x,判断能否整除 x。 flag=false;//如果能整除,说明 x 不是质数。 }我们可以根据此,判断当前列数加上当前本应填充的字母的 ASCII 码是否为质数。如果是,则输出这个字母,并且让字母变为下一个字母。否则输出空格。
详细的代码请参考视频题解。
- 1
信息
- ID
- 9399
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者