描述
求两个大的正整数相减的差。
格式
输入格式
共2行,第1行是被减数a,第2行是减数b(a 不小于 b)。每个大整数不超过200位,不会有多余的前导零。
输出格式
一行,即所求的差。
样例
输入样例
9999999999999999999999999999999999999 9999999999999
输出样例
9999999999999999999999990000000000000
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <stdio.h>
#include <algorithm>
#include <cmath>
using namespace std;
//#define N 10001
char res[201];
void Reverse(char *s,int n){
for(int i=0,j=n-1;i<j;i++,j--){
char c=s[i];
s[i]=s[j];
s[j]=c;
}
}
int main(){
char a[201], b[201];
cin>>a>>b;
int lena = strlen(a);
int lenb = strlen(b);
Reverse(a, lena);
Reverse(b, lenb);
int flag = 0,i;
// printf("lena = %d\n", lena);
for(i = 0; i<lena; ++i){
if(flag == 1){
a[i] -= 1;
flag = 0;
}
if(b[i] == '\0' || i>=lenb ){
b[i] = '0';
}
if(a[i] - b[i] < 0){
flag = 1;
a[i] += 10;
}
// printf("%d %d\n", a[i], b[i]);
res[i] = a[i] - b[i];
}
flag = 1;
for(i=lena-1; i>=0; --i){
if(res[i] == 0 && flag){
continue;
}
flag = 0;
printf("%d", res[i]);
}
if(flag == 1){
printf("0");
}
return 0;
}