题目描述 Description
给出两个正整数A和B,计算A-B的值。保证A和B的位数不超过500位。
输入描述 Input Description
读入两个用空格隔开的正整数
输出描述 Output Description
输出A-B的值
样例输入 Sample Input
3 12
样例输出 Sample Output
-9
数据范围及提示 Data Size & Hint
两个正整数的位数不超过500位
代码
#include <iostream>
#include <cstring>
using namespace std;
char v1[1000];
char v2[1000];
int sub[1000];
bool flag;
void subBigInteger(){
int len1, len2;
int t1, t2, i;
len1 = strlen(v1);
len2 = strlen(v2);
if(len1 < len2 || (len1 == len2 && strcmp(v1, v2) < 0)){
flag = true;
swap(len1, len2);
swap(v1, v2);
}
for(i = 1; i <= len1; ++i){
t1 = v1[len1 - i] - '0';
if(i > len2){
t2 = 0;
}
else{
t2 = v2[len2 - i] - '0';
}
sub[i] += t1 - t2;
if(sub[i] < 0){
--sub[i + 1];
sub[i] += 10;
}
}
while(!sub[len1] && len1 > 1){
--len1;
}
if(flag){
cout << "-";
}
for(i = len1; i > 0; --i){
cout << sub[i];
}
}
int main(){
cin >> v1 >> v2;
subBigInteger();
return 0;
}