递推基础题。对于洛谷的测试,此方法可以AC。acwing不行。
此问题就是个斐波那契数列f(x)=f(x-1)+f(x-2)。但由于数据过大,只能再用高精配合
思路:
1.定义三个数组,分别代表f(x)、f(x-1)、f(x-2)。
2.一个递推函数
3.一个高精度函数
4.一个复制函数,在x值变化时改变三个数组的对应值
首先是主函数
代码:
int main()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
a[0]=1;
b[0]=2;
int n;
cin>>n;
if(n==1)
{
cout<<1;
return 0;
}
if(n==2)
{
cout<<2;
return 0;
}//这两种情况直接输出
for(int i=3;i<=n;i++)
{
louti();
gaojing();
fuzhi();
}
for(int i=cnt;i>=0;i--)
{
if(i==cnt&&c[i]==0)
{
continue;
}
cout<<c[i];
}
}
没什么好说的
函数2(递推):
void louti()
{
memset(c,0,sizeof(c));
for(int i=0;i<cnt;i++)