7-197 乘法口诀数列
本题要求你从任意给定的两个 1 位数字 a1 和 a2 开始,用乘法口诀生成一个数列 {an},规则为从 a1 开始顺次进行,每次将当前数字与后面一个数字相乘,将结果贴在数列末尾。如果结果不是 1 位数,则其每一位都应成为数列的一项。
输入格式:
输入在一行中给出 3 个整数,依次为 a1、a2 和 n,满足 0≤a1,a2≤9,0<n≤103。
输出格式:
在一行中输出数列的前 n 项。数字间以 1 个空格分隔,行首尾不得有多余空格。
输入样例:
2 3 10
输出样例:
2 3 6 1 8 6 8 4 8 4
思路:由于两个10以内的数字相乘最多只是二位数,所以只需要考虑得出的结果是一一位数还是二位数就可以了,因为是固定的两个两个相乘往前递推的,所以需要单独用一个变量来作存储数组的角标,一位数就++两位数就加2就可以了。
#include<stdio.h>
int main()
{
int i,j,k,a1,a2,x,n,num[2000]={0};
scanf("%d %d %d",&a1,&a2,&n);
num[0]=a1,num[1]=a2;
for(i=0,j=0,k=2;i<n-2;i++)//最多做n-2次运算
{
x=num[j]*num[j+1];
if(x/10)//二位数
{
num[k]=x/10;
num[k+1]=x%10;
k=k+2;
}
else//一位数
{
num[k]=x;
k++;
}
j++;
}
for(i=0;i<n;i++)
{
printf("%d",num[i]);
if(i!=n-1) printf(" ");
}
return 0;
}