#include<iostream>
#include<cstdio>
#include<cstring>
void add_f(int a[],int b[],int c[]);
void add_s(int s[],int c[]);
using namespace std;
int main()
{
int i,n;
int a[1000],b[1000],c[1000],s[10000]={0};
int *pt,*pt1,*pt2,*t;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
freopen("file.in","r",stdin);
freopen("file.out","w",stdout);
cin>>n;
a[0]=1;a[1]=1;
b[0]=1;b[1]=1;
pt=c;pt1=a;pt2=b;
for(i=1;i<=n;i++)
{
add_f(pt1,pt2,pt);
t=pt1;
pt1=pt2;
pt2=pt;
pt=t;
add_s(s,pt);
}
//for(i=pt[0];i>=1;i--) cout<<pt[i];
//cout<<endl;
for(i=s[0];i>=1;i--) cout<<s[i];
fclose(stdin);
fclose(stdout);
return 0;
}
void add_f(int a[],int b[],int c[])
{
int lena=a[0];
int lenb=b[0];
int lenc=1;
int x=0;
while (lenc<=lena||lenc<=lenb)
{
c[lenc]=a[lenc]+b[lenc]+x;
x=c[lenc]/10;
c[lenc]%=10;
lenc++;
}
c[lenc]=x;
if (c[lenc]==0)
lenc--;
c[0]=lenc;
return;
}
void add_s(int s[],int c[])
{
int lens=s[0];
int lenc=c[0];
int len=1;
int x=0;
while (len<=lens||len<=lenc)
{
s[len]+=c[len]+x;
x=s[len]/10;
s[len]%=10;
len++;
}
s[len]=x;
if (s[len]==0)
len--;
s[0]=len;
return;
}
斐波拉契数列之和 题解
最新推荐文章于 2024-06-23 20:12:10 发布