C++输入两个高精度数,输出它们差的二倍
时间: 2023-07-11 17:11:52 浏览: 144
好的,可以使用字符串来表示高精度数,然后逐位相减即可。以下是示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
// 首先将 a, b 补齐到同样的长度
int len = max(a.size(), b.size());
a = string(len - a.size(), '0') + a;
b = string(len - b.size(), '0') + b;
// 从低位到高位逐位相减
string c(len, '0');
int carry = 0;
for (int i = len - 1; i >= 0; i--)
{
int x = a[i] - '0';
int y = b[i] - '0';
int z = x - y - carry;
if (z < 0)
{
z += 10;
carry = 1;
}
else
{
carry = 0;
}
c[i] = z + '0';
}
// 输出两倍的差
cout << c << c << endl;
return 0;
}
```
这里假设输入的两个数都是非负整数。如果可能包含负数,则需要对输入进行特判。
阅读全文