leave_for @ 2023-11-19 00:15:27
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
const long long cf=100000000000000000;
//进位值
long long* add(long long a[], long long b[])
{
long long *c=new long long[20];
for(int i=0;i<20;i++) c[i]=0;
for(int i=0;i<20;i++)
{
c[i]+=a[i]+b[i];
if(c[i]>cf)
{
c[i+1]=c[i]/cf;
c[i]%=cf;
}
}
return c;
}//用20个longlong存位
int main()
{
long long a[20],b[20],*c;
a[0]=2;b[0]=3;
for(int i=1;i<20;i++)
{
a[i]=0;b[i]=0;
}
int n;
cin>>n;
if(n<=3)
{
cout<<n;
return 0;
}
else
{
for(int i=0;i<n-3;i++)
{
c=add(a,b);
copy(b,b+20,a);
copy(c,c+20,b);
delete[] c;
//斐波那契数列
}
}
for(int i=19;i>=0;i--)
{
if(b[i]>0) cout<<b[i];
}
//输出
return 0;
}
谢谢!!!
by LeNotFound @ 2023-11-19 00:29:38
数组开大点试试(?