复制Markdown 展开
题目描述
九九乘法表是数学学习中必须记忆的内容之一。
九九乘法表的前三行为:
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
类似的,我们可以定义出九九乘方表,其前三行为:
1 ^ 1 = 1
2 ^ 1 = 2 2 ^ 2 = 4
3 ^ 1 = 3 3 ^ 2 = 9 3 ^ 3 = 27
a ^ b
的含义为 a^bab,也就是 bb 个 aa 相乘。
例如:3^4=3\times3\times 3\times 3 = 8134=3×3×3×3=81
请你输出九九乘方表的前 nn 行,每两项之间由一个空格隔开。
输入格式
输入一行一个整数 nn。
输出格式
输出 nn 行,为九九乘方表的前 nn 行。
请注意:符号 ^ 和 = 前后均由一个空格分隔,每两项之间由一个空格隔开。
输入输出样例
输入 #1复制
3
输出 #1复制
1 ^ 1 = 1 2 ^ 1 = 2 2 ^ 2 = 4 3 ^ 1 = 3 3 ^ 2 = 9 3 ^ 3 = 27
说明/提示
对于 100\%100% 的测试数据,1 \le n \le 91≤n≤9。
文字题解
题目大意
给定一个整数 nn,输出九九乘方表的前 nn 行,每两项之间由一个空格隔开。
解析
本题难点在于控制每行应当输出的内容。不难发现,第 ii 行需要输出 ii 个形如 x ^ y = z
的算式。
我们使用一个二重循环控制这个流程。
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= i; ++j) {
// To do here
}
对于第 ii 行,不难发现我们需要依次输出 i ^ 1 = ...
、i ^ 2 = ...
、……、i ^ i = ...
共 ii 个式子。
因此在二重循环的括号内,我们应当填入以下内容:
printf("%d ^ %d = %d ", i, j, ...);
其中 ...
为 i ^ jij 的值。这里可以自己写一个函数进行实现计算过程。
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));
需要注意符号之间的空格,以及算式两两之间的空格。