90分蒟蒻求助
  • 板块P1255 数楼梯
  • 楼主yehaoming
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/9 22:35
  • 上次更新2024/7/10 09:19:12
查看原帖
90分蒟蒻求助
1081457
yehaoming楼主2024/7/9 22:35

高精

#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;
}

改必关

2024/7/9 22:35
加载中...