这答案太长了-长度为一千的数组居然放不下
2024-04-25 13:33:19
发布于:湖北
128阅读
0回复
0点赞
原理很简单
就是把高精度加的代码复制过来,改成了一个高精度加的函数
然后就用循环进行计算
没有用递归,用递归大概率会超时吧
#include <bits/stdc++.h>
using namespace std;
string cs[5200];
int a[2000],b[2000],c[2000];
string adds(string s1,string s2)
{
for(int i=0;i<100;i++)
{
a[i]=0;
b[i]=0;
c[i]=0;
}
for(int i=0;i<s1.length();i++)
{
a[i] = s1[s1.length()-1-i]-'0';
}
for(int i=0;i<s2.length();i++)
{
b[i] = s2[s2.length()-1-i]-'0';
}
int d=0;
int lang = max(s1.length(),s2.length());
for (int i=0;i<lang ;i++)
{
int q=a[i]+b[i]+d;
if(q>=10)
{
d=1;
}
else{d=0;}
c[i]=q%10;
}
if(d!=0){
c[lang]=d;
}
else{
lang--;
}
string s3="";
for(int i=lang;i>=0;i--)
s3+=c[i]+'0';
return s3;
}
int main()
{
int n;
cin>>n;
cs[1]="1";
cs[2]="2";
for(int i=3;i<=n;i++)
{
cs[i]=adds(cs[i-1],cs[i-2]);
}
cout<<cs[n];
return 0;
}
这里空空如也
有帮助,赞一个