#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int N = 1e5 + 5;
typedef long long ll;
string add(string a, string b)
{//高精度加法
string sum;
int len = max(a.length(), b.length());
int pre = 0;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for (int i = 0; i < b.length(); i++)
{
int temp = a[i] - '0' + b[i] - '0' + pre;
sum += '0' + (temp % 10);
pre = temp / 10;
}
sum += pre + '0';
reverse(sum.begin(), sum.end());
return sum;
}
string minu(string a, string b)
{//高精度减法
string sum;
int len = max(a.length(), b.length());
int pre = 0;
if (a.length() < b.length() || a.length() == b.length() && a[0] < b[0])
{
return "0";
}
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for (int i = 0; i < b.length(); i++)
{
int temp;
temp = a[i] - '0' - (b[i] - '0')-pre;
if (temp < 0)
{
temp += 10;
pre = 1;
}
else
pre = 0;
if(temp!=0)
sum += '0' + (temp % 10);
}
reverse(sum.begin(), sum.end());
return sum;
}
string tim(string a, int b)
{//高精度乘以低精度
string sum;
int len =a.length();
int pre = 0;
reverse(a.begin(), a.end());
for (int i = 0; i < a.length(); i++)
{
int temp = (a[i] - '0') * b + pre;
sum += '0' + (temp % 10);
pre = temp / 10;
}
while (pre != 0)
{
sum += (pre % 10) + '0';
pre /= 10;
}
reverse(sum.begin(), sum.end());
return sum;
}
string div(string a, int b)
{//高精度除以低精度
string sum;
int temp = 0;
for (int i = 0; i < a.length(); i++)
{
temp *= 10;
temp += (a[i] - '0');
if (temp >= b)
{
sum += '0' + temp / b;
temp -= temp / b * b;
}
}
return sum;
}
int main()
{
string y;
string x;
return 0;
}
高精度算法模板
于 2022-09-14 08:14:43 首次发布