题目:
已知某数列的前二项为2和3,其后各项根据当前最后二项的乘积按以下规则生成:
. 若乘积为一位数,则该乘积为数列的后继项;
. 若乘积为二位数,则该乘积的十位数和个位数数字依次作为数列的两个后继项。
本程序在输入数列项N值后,输出该数列的前N项以及前N项的和。
如:输入 N=10
输出 2,3,6,1,8,8,6,4,2,4
SUM(10)=44 (特殊数列.c)
思路:把2,3确定在数组中0和1项中,第三项等于2*3,第四项等于3*6,第四项等于18/10,第五项等于18%10
代码:
#include <stdio.h>
main()
{
int n,i,sum=0,a[100]={2,3},j=2;
scanf("%d",&n);
for (i=2;i<n;i++) //从2开始,不改变0,1两项的值
{
a[i]=a[i-1] * a[i-2];
if (a[i]/10>0)
{
a[i+1]=a[i]%10; //下一个数组元素等于个位
a[i]=a[i]/10; //当前数组元素等于10位
i++;
}
}
for (i=0;i<n;i++)
{
sum+=a[i];
printf("%d ",a[i]);
}
printf("\n%d\n",sum);
}