描述
小小铜有个非常神奇的记忆功能,给他两个一位数字 a
1
和 a
2
开始,他可以用乘法口诀生成一个新的数列 a
n
,在他神奇的脑袋瓜中,数列从 a
1
开始依次记忆,并且能每次将当前数字与后面一个数字相乘,将结果贴在数列末尾。如果结果不是 1 位数,他会把它拆分开来当作很多项。
输入描述
输入在一行中给出 3 个整数,依次为 a
1
、a
2
和 n ,满足 0≤a
1
,a
2
≤9 ,2<n≤10
3
。
输出描述
在一行中输出数列的前 n 项。数字间以 1 个空格分隔,行首尾不得有多余空格。
用例输入 1
2 3 10
用例输出 1
2 3 6 1 8 6 8 4 8 4
提示
样例中的第1项和第2项为 2 和 3。从 2 开始,2×3=6,所以第 3 项是 6。然后计算 3×6=18,又要拆开,所以第 4、5 项分别是 1、8。依次类推…… 因为只要输出前 10 项,最后输出的是 4
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[2010],n;
cin>>a[1]>>a[2]>>n;
cout<<a[1]<<' '<<a[2];//先把前两项输出
int i=2,j=2;//i用来标记做乘法的两个数,j用来标记需要存储的数
while(i<=n){
int ans=a[i]*a[i-1];
if(ans>=10){//如果结果>=10,用两个位置存储得数
a[++j]=ans/10;
a[++j]=ans%10;
}
else{//反之,只用一格
a[++j]=ans;
}
i++;//每次往前一格
}
for(int i=3;i<=n;i++){
cout<<' '<<a[i];
}
}