• 大整数减法


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

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

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

    代碼實現:

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 int la,lb,sa[300],sb[300];
     5 char a[300],b[300];
     6 bool bj(){
     7     if(la>lb) return 1;
     8     if(la<lb) return 0;
     9     for(int i=0;i<la;i++){
    10         if(a[i]>b[i]) return 1;
    11         if(a[i]<b[i]) return 0;
    12     }
    13 }
    14 int main(){
    15     scanf("%s%s",&a,&b);
    16     la=strlen(a);lb=strlen(b);
    17     if(bj()){
    18         for(int i=0;i<la;i++) sa[la-i]=a[i]-'0';
    19         for(int i=0;i<lb;i++) sb[lb-i]=b[i]-'0';
    20         sa[0]=la;sb[0]=lb;
    21     }
    22     else{
    23         printf("-");
    24         for(int i=0;i<lb;i++) sa[lb-i]=b[i]-'0';
    25         for(int i=0;i<la;i++) sb[la-i]=a[i]-'0';
    26         sa[0]=lb;sb[0]=la;
    27     }
    28     for(int i=1;i<=sa[0];i++){
    29         sa[i]-=sb[i];
    30         if(sa[i]<0){
    31             sa[i]+=10;
    32             sa[i+1]--;
    33         }
    34     }
    35     while(!sa[sa[0]]) --sa[0];
    36     for(int i=sa[0];i>0;i--) printf("%d",sa[i]);
    37     printf("
    ");
    38     return 0;
    39 }

    。。。

  • 相关阅读:
    软件版本具体代表什么意思
    面向接口的编程
    MySQL mysqldump用法
    常见问答解答
    Perl 语言笔记
    JAVA 基础知识
    面向接口编程的基本原则
    判断文件存在与否【Linux】
    Gtk Label设置字体颜色
    解压缩路径设置【Linux】
  • 原文地址:https://www.cnblogs.com/J-william/p/6155563.html
Copyright © 2020-2023  润新知