yehaoming @ 2024-07-09 22:35:30
高精
#include<bits/stdc++.h>
using namespace std;
int last1[5010];
int last2[5010];
int now[5010];
void printBIG(int a[])
{
for(int i=a[0];i>=1;i--)cout<<a[i];
}
void s2BIG(string s,int a[])
{
a[0]=s.size();
for(int i=1;i<=a[0];i++)
{
a[i]=s[a[0]-i]-'0';
}
}
void addBIG(int a[],int b[],int c[])
{
int u=0;
c[0]=max(a[0],b[0]);
for(int i=1;i<=c[0];i++)
{
int t=a[i]+b[i]+u;
c[i]=t%10;
u=t/10;
}
if(u>0)
{
c[0]++;
c[c[0]]=u;
}
}
int main()
{
int n;
cin>>n;
if(n==1||n==2)
{
cout<<1<<endl;
return 0;
}
string s1="1",s2="1",s3="0";
s2BIG(s1,last1);
s2BIG(s2,last2);
s2BIG(s3,now);
for(int i=2;i<=n;i++)
{
addBIG(last1,last2,now);
memcpy(last2,last1,sizeof(last2));
memcpy(last1,now,sizeof(last1));
}
printBIG(now);
return 0;
}
改必关
by smart_ @ 2024-07-09 22:39:46
是不是有点复杂化了? 这题高精+递推就可以做了
@yehaoming
by Handezheng @ 2024-07-10 07:59:39
我改了一下,AC了
by Handezheng @ 2024-07-10 08:01:20
@yehaoming
请你考虑,当n=2时,有几种方法