答案很长!!数组需要开大
2024-11-16 14:25:30
发布于:江苏
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
string add(string s1,string s2)
{
// 反转存到int数组中
int a[10005] = {0},b[10005] = {0},c[10005] = {0};
int len1 = s1.size(),len2 = s2.size();
for(int i=0;i<len1;i++)
a[i] = s1[len1-i-1]-'0';
for(int i=0;i<len2;i++)
b[i] = s2[len2-i-1]-'0';
int len = max(len1,len2);
// 高精度加法核心代码
for(int i=0;i<len;i++)
{
c[i] += a[i]+b[i];
c[i+1] += c[i]/10;
c[i] = c[i]%10;
}
// 判断最高位是否进位
if(c[len])
len++;
string ans = "";
for(int i=len-1;i>=0;i--)
ans += c[i]+'0';
return ans;
}
int n;
string f[5005];
int main()
{
f[1] = "1";
f[2] = "2";
cin >> n;
for(int i=3;i<=n;i++)
f[i] = add(f[i-1],f[i-2]);
cout << f[n];
return 0;
}
这里空空如也
有帮助,赞一个