本题要求你从任意给定的两个 1 位数字 a 1 和 a 2 开始,用乘法口诀生成一个数列 {a n },规则为从 a 1 开始顺次进行,每次将当前数字与后面一个数字相乘,将结果贴在数列末尾。如果结果不是 1 位数,则其每一位都应成为数列的一项。 输入格式: 输入在一行中给出 3 个整数,依次为 a 1 、a 2 和 n,满足 0≤a 1 ,a 2 ≤9,0<n≤10 3 。 输出格式: 在一行中输出数列的前 n 项。数字间以 1 个空格分隔,行首尾不得有多余空格。 输入样例: 2 3 10 输出样例: 2 3 6 1 8 6 8 4 8 4 样例解释: 数列前 2 项为 2 和 3。从 2 开始,因为 2×3=6,所以第 3 项是 6。因为 3×6=18,所以第 4、5 项分别是 1、8。依次类推…… 最后因为第 6 项有 6×8=48,对应第 10、11 项应该是 4、8。而因为只要求输出前 10 项,所以在输出 4 后结束。
时间: 2024-01-01 15:03:39 浏览: 117
乘法口诀的练习
好的,针对您的问题,我可以给出以下代码实现:
```python
a1, a2, n = map(int, input().split())
# 将 a1, a2 先加入数列
res = [a1, a2]
# 从第 3 项开始生成数列
for i in range(2, n):
# 计算当前项的值
cur = res[i - 1] * res[i - 2]
# 如果当前项为 1 位数,则直接加入数列
if cur < 10:
res.append(cur)
# 否则将当前项的每一位分别加入数列
else:
res.append(cur // 10)
res.append(cur % 10)
# 输出数列的前 n 项
print(' '.join(map(str, res[:n])))
```
这里的思路比较简单,就是按照题目要求,从第 3 项开始顺次生成数列,并将生成的结果加入列表中。需要注意的是,如果当前项为 1 位数,则直接加入列表,否则需要将当前项的每一位分别加入列表。最后输出数列的前 n 项即可。
阅读全文