【题目描述】
求两个大的正整数相减的差。
【输入】
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
【输出】
一行,即所求的差。
【输入样例】
9999999999999999999999999999999999999
9999999999999
【输出样例】
9999999999999999999999990000000000000
【c++代码】:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string num1, num2;
int a1[10005], a2[10005], len1, len2;
bool sgn;
bool cmp(string a,string b){
if(a.size()!=b.size()){
return a.size()<b.size();
}return a<b;
}
int main() {
cin >> num1 >> num2;
if(cmp(num1,num2)){
sgn=true;
swap(num1,num2);
}
len1 = num1.size();
for (int i = 0; i < len1; i++) {
a1[i] = num1[len1 - 1 - i] - '0';
}
len2 = num2.size();
for (int i = 0; i < len2; i++) {
a2[i] = num2[len2 - 1 - i] - '0';
}
for(int i=0;i<len1;i++){
a1[i]-=a2[i];
}
for(int i=0;i<len1;i++){
while(a1[i]<0){
a1[i+1]--;
a1[i]+=10;
}
}
while(len1>1&&a1[len1-1]==0){
len1--;
}
if(sgn){
cout<<"-";
}
for (int i = len1 - 1; i >= 0; i--) {
cout << a1[i];
}
cout << endl;
return 0;
}