zoukankan      html  css  js  c++  java
  • 18.2.28 codevs3115 高精度练习之减法

    题目描述 Description

    给出两个正整数A和B,计算A-B的值。保证A和B的位数不超过500位。

    输入描述 Input Description

    读入两个用空格隔开的正整数

    输出描述 Output Description

    输出A-B的值

    样例输入 Sample Input

    3 12

    样例输出 Sample Output

    -9

    数据范围及提示 Data Size & Hint

    两个正整数的位数不超过500位

     1 #include <iostream>
     2 #include <string.h>
     3 #include <math.h>
     4 
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     char a[600],b[600];//计算a-b
    10     cin>>a>>b;
    11     //scanf("%s %s",la,lb);
    12     int la=strlen(a),lb=strlen(b),l=0;
    13     int an[600],bn[600];
    14     if(la>lb)
    15     {
    16         for(int i=la-1;i>=la-lb;i--)
    17             bn[i]=b[i-(la-lb)]-'0';
    18         for(int i=0;i<=la-lb-1;i++)
    19             bn[i]=0;
    20         for(int i=0;i<=la-1;i++)
    21             an[i]=a[i]-'0';
    22         l=la-1;
    23     }
    24     else if(la<lb)
    25     {
    26         for(int i=lb-1;i>=lb-la;i--)
    27             an[i]=a[i-(lb-la)]-'0';
    28         for(int i=0;i<=lb-la-1;i++)
    29             an[i]=0;
    30         for(int i=0;i<=lb-1;i++)
    31             bn[i]=b[i]-'0';
    32         l=lb-1;
    33     }
    34     else
    35     {
    36         for(int i=0;i<=la-1;i++)
    37             an[i]=a[i]-'0';
    38         for(int i=0;i<=lb-1;i++)
    39             bn[i]=b[i]-'0';
    40         l=la-1;
    41     }
    42     int flag=0;
    43     for(int i=0;i<=l;i++)
    44     {
    45         if(an[i]>bn[i])
    46         {
    47             flag=1;
    48             break;
    49         }
    50         if(an[i]<bn[i])
    51         {
    52             flag=2;
    53             break;
    54         }
    55     }
    56     if(flag==1)
    57     {
    58         for(int i=l;i>=0;i--)
    59         {
    60             an[i]-=bn[i];
    61             while(an[i]<0&&i!=0)
    62             {
    63                 an[i]+=10;
    64                 an[i-1]--;
    65             }
    66         }
    67         for(int i=0;i<=l;i++)
    68             cout<<an[i];
    69         cout<<endl;
    70     }
    71     else if(flag==2)
    72     {
    73         for(int i=l;i>=0;i--)
    74         {
    75             bn[i]-=an[i];
    76             while(bn[i]<0&&i!=0)
    77             {
    78                 bn[i]+=10;
    79                 bn[i-1]--;
    80             }
    81         }
    82         cout<<"-";
    83         for(int i=0;i<=l;i++)
    84             cout<<bn[i];
    85         cout<<endl;
    86     }
    87     else
    88         cout<<"0";
    89     return 0;
    90 }
    View Code

    做过很多遍了 再做一次

    暴力解法

    注定失败的战争,也要拼尽全力去打赢它; 就算输,也要输得足够漂亮。
  • 相关阅读:
    java继承
    Linux下word转pdf以及unoconv中文乱码问题
    jquery点击事件捕获
    在Windows上玩TensorFlow(一)——安装Docker【转】
    php面试总结
    [转载] PHP 线程,进程和并发
    微信小程序数据解密
    sql基础整理
    PHP 底层的运行机制与原理【转载】
    react-native 运行原理【转载】
  • 原文地址:https://www.cnblogs.com/yalphait/p/8485701.html
Copyright © 2011-2022 走看看