202301E 九九乘方表 题解

· · 题解

[语言月赛202301] 九九乘方表 题解

Source & Knowledge

2023 年 1 月语言月赛,由洛谷网校入门计划/基础计划提供。

文字题解

题目大意

给定一个整数 n,输出九九乘方表的前 n 行,每两项之间由一个空格隔开。

解析

本题难点在于控制每行应当输出的内容。不难发现,第 i 行需要输出 i 个形如 x ^ y = z 的算式。

我们使用一个二重循环控制这个流程。

for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= i; ++j) {
        // To do here
    }

对于第 i 行,不难发现我们需要依次输出 i ^ 1 = ...i ^ 2 = ...、……、i ^ i = ...i 个式子。

因此在二重循环的括号内,我们应当填入以下内容:

printf("%d ^ %d = %d ", i, j, ...);

其中 ...i ^ j 的值。这里可以自己写一个函数进行实现计算过程。

int getPower(int x, int y) {
    int res = 1;
    for (int i = 1; i <= y; ++i) res *= x;
    return res;
}

由于数据规模较小,因此这里暴力计算即可。

因此在二重循环的括号内,我们可以填入以下内容:

printf("%d ^ %d = %d ", i, j, getPower(i, j));

需要注意符号之间的空格,以及算式两两之间的空格。

视频题解

完整代码请在视频中查看。