- [7FOJ]高精度减法
- 2021-02-09 01:08:55 @
我也还没有过,不知道为啥。
// [7FOJ]高精度减法.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
using namespace std;
using VI = vector<int>;
bool cmp(VI& a, VI& b) {
if (a.size() != b.size()) return a.size() > b.size();
for (int i = 0; i < a.size(); ++i)
if (a[i] != b[i]) return a[i] > b[i];
return true;
}
VI sub(VI& a, VI& b) {
VI c;
for (int i = 0, t = 0; i < a.size(); ++i) {
t = a[i] - t;
if (i < b.size()) t -= b[i];
c.push_back((t + 10) % 10);
t = t < 0;
}
while (c.size() > 1 && c.back() == 0) c.pop_back();
return c;
}
int main()
{
#ifdef _DEBUG
#pragma warning(disable: 4996)
freopen("in.txt", "r", stdin);
#endif // _DEBUG
string a, b;
cin >> a >> b;
VI A, B;
for (int i = a.size() - 1; i >= 0; --i) A.push_back(a[i] - '0');
for (int i = b.size() - 1; i >= 0; --i) B.push_back(b[i] - '0');
while (A.size() > 1 && A.back() == 0) A.pop_back();
while (B.size() > 1 && B.back() == 0) B.pop_back();
VI C;
if (cmp(A, B)) {
C = sub(A, B);
}
else {
cout << '-';
C = sub(B, A);
}
for (int i = C.size() - 1; i >= 0; --i) cout << C[i];
cout << endl;
return 0;
}
1 条评论
-
limingyang LV 10 MOD @ 2021-02-10 16:30:54
此非本OJ题目,如果您对数据产生质疑,可以去7FOJ提问,谢谢
- 1