11:大整数减法
描述
求两个大的正整数相减的差。
输入
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
输出
一行,即所求的差。
样例输入
1 2
| 9999999999999999999999999999999999999 9999999999999
|
样例输出
1
| 9999999999999999999999990000000000000
|
//会写大整数加法这个题也没问题啦
AC代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #include<bits/stdc++.h> using namespace std;
const int N = 205;
int a[N]; int b[N]; int c[N];
int main(){ string s1,s2; cin>>s1>>s2; int len1 = s1.length(); int len2 = s2.length(); while(len2<len1){ s2 = "0" + s2; ++len2; } for(int i=0;i<len1;i++){ a[i] = s1[len1-1-i] - '0'; } for(int i=0;i<len1;i++){ b[i] = s2[len2-1-i] - '0'; } int len = 0; while(len<len1){ if(a[len]<b[len]){ a[len+1] -= 1; c[len] = 10 + a[len] - b[len]; } else if(a[len]>=b[len]) c[len] = a[len] - b[len]; ++len; } while(!c[len-1]&&len>1){ --len; } for(int i=len-1;i>=0;i--){ cout<<c[i]; } cout<<endl; return 0; }
|