标题 乘法口诀数列
问题描述 从任意给定的两个一位数字 a1 和 a2 开始,用乘法口诀生成一个n项数列 {a1,a2,…,an}, 规则为从 a1 开始顺次进行,每次用当前数字与后面一个数字相乘,将结果贴在数列末尾。 如果结果不是一位数,则其每一位都应成为数列的一项。
输入说明 在一行中读入 3 个整数,依次为 a1、a2 和 n,满足 0≤a1,a2≤9,1≤n≤100。
输出说明 输出数列的前 n 项,各数字间以1个空格分隔。
输入样例
2 3 10
输出样例
2 3 6 1 8 6 8 4 8 4
样例说明: 原始数列:2 3 2*3=6
更新数列:2 3 6 3*6=18,18拆分为两项
更新数列:2 3 6 1 8 6*1=6
更新数列:2 3 6 1 8 6 1*8=8
更新数列:2 3 6 1 8 6 8 8*6=48,48拆分为两项
更新数列:2 3 6 1 8 6 8 4 8 6*8=48,48拆分为两项
更新数列:2 3 6 1 8 6 8 4 8 4 8
输出数列前10项:2 3 6 1 8 6 8 4 8
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int n = 0;
int arr[101] = { 0 };
scanf("%d %d %d", &arr[1], &arr[2], &n);
int count = 2;
for (int i = 1; ; i++)
{
if (count <= n)
{
if (arr[i] * arr[i + 1] < 10)
{
arr[count + 1] = arr[i] * arr[i + 1];
count++;
}
else
{
arr[count + 1] = arr[i] * arr[i + 1] / 10;
arr[count + 2] = arr[i] * arr[i + 1] % 10;
count += 2;
}
}
else
{
break;
}
}
for (int i = 1; i <= n; i++)
{
printf("%d ", arr[i]);
}
return 0;
}