高精度
2025-08-14 15:49:31
发布于:浙江
7阅读
0回复
0点赞
看见题解区没几个写高精度的,于是写了个高精度。
题目思路
按题目给的递推式一步一步来写就是。
code
#include<bits/stdc++.h>
using namespace std;
#define int long long
string add(string s1, string s2) {
int a[1145] = {0}, b[1145] = {0}, c[1145] = {0};
string ans = "";
for(int i = 0; i < s1.size(); i ++) a[i] = s1[s1.size()-i-1]-'0';
for(int i = 0; i < s2.size(); i ++) b[i] = s2[s2.size()-i-1]-'0';
for(int i = 0; i < 1144; i ++) {
c[i] += (a[i]+b[i]);
c[i+1] = (c[i] >= 10);
c[i] %= 10;
}
int x = -1;
for(int i = 1144; i >= 0; i --) {
if(c[i] != 0) {
x = i;
break;
}
}
for(int i = x; i >= 0; i --) {
ans += c[i]+'0';
}
return ans;
}
main() {
int n;
cin >> n;
string a = "1", b = "1";
for(int i = 3; i <= n; i ++) {
string c = add(a, b);
a = b;
b = c;
}
cout << b;
return 0;
}
这里空空如也
有帮助,赞一个