B3844 题解
欢迎大家报名洛谷网校的课程,期待和大家一起进步!
:::align{center} :::
Upd on 2025/2/15:之前写的太草率了,很多人反映看不懂,重新写了全部内容,希望可以帮助大家理解。
\textbf{Solution}
首先在题目中找规律。
考虑行与行之间是独立的,所以可以将每行分开考虑。
P.S.
下面的叙述中,
i,j 默认从0 开始,即\texttt{0-indexed} 。此外,暂时忽略取模,具体取模过程详见代码。
假设当前正要输出第 (char)(i + 'A')。
从
- 当
j=0 时,字符为(char)(i + 'A'); - 当
j=1 时,字符为(char)(i + 'A' + 1); - 当
j=2 时,字符为(char)(i + 'A' + 2); - 当
j=3 时,字符为(char)(i + 'A' + 3);
将所有的 + 'A' 提出,就可以得到对于第
当然,
\textbf{Code}
#include <bits/stdc++.h>
int n;
int main() {
std::cin >> n;
for (int i = 0; i < n; ++i) { // 遍历每一行
for (int j = 0; j < n; ++j) { // 遍历每一列
std::cout << (char)((i + j) % 26 + 'A'); // 不要忘记要加上 'A'
}
std::cout << std::endl;
}
return 0;
}