请高手帮我看道c++的题目

来源:百度知道 编辑:UC知道 时间:2024/05/26 22:35:10
#include<iostream.h>
void sub(int n,int uu[]);
void main()
{int i,n,aa[10]={0};
cin>>n>>aa[0]>>aa[1];
for(i=1;i<n;i++)sub(i,aa);
for(i=0;i<=n;i++)cout<<aa[i];
cout<<endl;
}
void sub(int n,int uu[])
{int t;
t=uu[n-1];
t+=3*uu[n];
n++;
if(t>=10)
{uu[n++]=t/10;
uu[n]=t%10;
}
else uu[n]=t;
}

看起来好像是用前两个数来求第三个数的.第一个数n用来控制数字的总数,为n+1,比如你输入
3
2
3
则共有3+1=4个数,
第一个为2,第2个为3,(你输入的),
第三个数为(2+3*3)/10=1,(因为2+3*3>10),
第四个数为3+1*3=6,(6<10),
故其输出2316.
又如你输入
5
2
3
输出231619.
计算如下
2
3
(2+3*3)/10=1;
3+1*3=6,
(1+6*3)/10=1;
6+1*3=9.
但是里面的 uu[n]=t;一句的用处没看出来.另外当第一个n输入9时,也会出现些问题,没弄懂.(原则上第一个数可以输1-9中任一数字,但大了不行,因为aa[10]只能容10个数字.)
希望对你有些帮助.