小米OJ #3
有 N 行测试数据,每一行有两个代表整数的字符串 a 和 b,长度超过百位。规定 a>=b,a, b > 0。 测试结果可以用 linux 小工具 bc
进行测试是否正确。
#include <iostream>
#include <algorithm>
#include <vector>
#include <sstream>
using namespace std;
void minus1(string a, string b)
{
if (a == b)
{
cout << "0" << endl;
return;
}
int singnal = 0;
int len1 = a.size();
int len2 = b.size();
if (len1<len2 || len1 == len2 && a<b)
{
string c = a;
a = b;
b = c;
singnal = 1;
}
int i, n = len1 - len2;
for (i = len2 - 1; i >= 0; i--)
a[len1 - 1 - i] = '0' + a[len1 - 1 - i] - b[len2 - 1 - i];
for (i = len1 - 1; i >= 0; i--)
{
if (a[i]<'0')
{
a[i] += 10;
a[i - 1]--;
}
}
i = 0;
while ('0' == a[i])
i++;
a.erase(0, i);
if (singnal)
a = '-' + a;
cout << a << endl;
}
int main()
{
string num,num1, num2,result;
int length_num ,k;
cin >> num;
length_num = num.length();
for (int i = 0; i < length_num; i++)
{
if (num[i] == '-')
{
k = i;
break;
}
}
num1=num.substr(0, k);
num2 = num.substr(k+1, length_num);
minus1(num1, num2);
//cout << Subtraction(num1, num2) << endl;
return 0;
}