11:大整数减法
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
求两个大的正整数相减的差。
- 输入
- 共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
- 输出
- 一行,即所求的差。
- 样例输入
-
9999999999999999999999999999999999999 9999999999999
- 样例输出
-
9999999999999999999999990000000000000
- 查看
- 提交
- 统计
- 提问
-
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 char a[10001]; 6 char b[10001]; 7 int a1[10001]; 8 int b1[10001]; 9 int c[10001]; 10 int main() 11 { 12 scanf("%s",&a); 13 scanf("%s",&b); 14 int la=strlen(a); 15 int lb=strlen(b); 16 if(lb>la||(la==lb&&strcmp(a,b)<0)) 17 { 18 swap(a,b); 19 cout<<"-"; 20 } 21 la=strlen(a); 22 lb=strlen(b); 23 for(int i=0;i<la;i++) 24 { 25 a1[i]=a[la-i-1]-'0'; 26 } 27 for(int i=0;i<lb;i++) 28 { 29 b1[i]=b[lb-i-1]-'0'; 30 } 31 int i=0;//当前位数 32 while(i<la) 33 { 34 if(a1[i]-b1[i]<0) 35 { 36 a1[i]=a1[i]+10; 37 a1[i+1]--; 38 } 39 c[i]=a1[i]-b1[i]; 40 i++; 41 } 42 while(1) 43 { 44 if(c[i]==0&&i>=1) 45 i--; 46 else break; 47 } 48 for(int j=i;j>=0;j--) 49 cout<<c[j]; 50 return 0; 51 }