11:大整数减法

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 }

     

posted @ 2017-03-14 17:26  自为风月马前卒  阅读(1018)  评论(0编辑  收藏  举报

Contact with me