大整数减法

总时间限制:
1000ms
内存限制:
65536kB
描述

求两个大的正整数相减的差。

输入
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
输出
一行,即所求的差。
样例输入
9999999999999999999999999999999999999
9999999999999
样例输出
9999999999999999999999990000000000000

 

大整数的减法和加法其实差不多,下面也附上两种ac代码。

版本一:
#include
    
    
     
     
#include
     
     
      
      
int main()
{
    char s1[210],s2[210];
    int a[210]={0},b[210]={0},i,j=0,k,t=0,l1,l2;
      gets(s1);
      gets(s2);
      l1=strlen(s1);
      l2=strlen(s2);
      for(i=l1-1;i>=0;i--)
        a[j++]=s1[i]-'0';
      for(j=0,i=l2-1;i>=0;i--)
        b[j++]=s2[i]-'0';
        for(i=0;i
      
      
       
       =0&&a[i]==0;i--);
            if(i>=0)
            {
                for(;i>=0;i--)
                printf("%d",a[i]);
            }
            else
                printf("0");
            return 0;

}
版本二:
#include
       
       
        
        
#include
        
        
          char a[202],b[202]; int c[202],d[202]; int main() { int l1,l2,i,k,t; scanf("%s%s",a,b); l1=strlen(a),l2=strlen(b); for(i=0;i 
         
           l2?k=l1:k=l2; for(i=0;i<=k;i++) t=c[i]-d[i],t<0?(t+=10,c[i+1]--):t,c[i]=t; while(!c[k]&&k)k--; for(;k>=0;k--) printf("%d",c[k]); return 0; } 
          
        
       
       
      
      
     
     
    
    


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值