• codevs 3115 高精度练习之减法 swap


    注意判断正负 和进位

    ps:swap函数还是挺好用的

    #include <iostream>
    #include<cstdio>
    #include <vector>
    #include <sstream>
    #include <string>
    #include <cstring>
    #include <cmath>
    #include <stack>
    #include <algorithm>
    using namespace std;
    
    const int MAXL=505;
    char al[MAXL];
    char bl[MAXL];
    char cl[MAXL];
    int a[MAXL];
    int b[MAXL];
    int c[MAXL];
    
    int stra;
    int strb;
    int ll;
    
    
    /*void output()
    {
       for(int i=0;i<stra;i++)
        {
            cout<<a[i]<<" ";
        }
        cout<<endl;
        for(int i=0;i<strb;i++)
        {
            cout<<b[i]<<" ";
        }
        cout<<endl;
    }*/
    void witch()
    {
        if(strb>stra)
            {
                cout<<"-";
                swap(al,bl);
            }
        else if(stra==strb)
        {
        for(int i=0;i<stra;i++)
         {
            if(bl[i]>al[i])
         {cout<<"-";
                swap(al,bl);}
          else if(bl[i]<al[i]) break;
         }
        }
    }
    
    void input()
    {
    scanf("%s",&al);
    getchar();
    scanf("%s",&bl);
    stra=strlen(al);
    strb=strlen(bl);
    witch();
    stra=strlen(al);
    strb=strlen(bl);
    }
    void rever()
    {
        for(int i=0;i<stra;i++)
        {
            a[i]=al[stra-1-i]-'0';///
        }
        for(int i=0;i<strb;i++)
        {
            b[i]=bl[strb-1-i]-'0';///
        }
        //output();
    }
    
    void minis()
    {
        ///最后一位前需要判断借位,最后一位后不需要判断吧
        ll=max(stra,strb);
        int temp=0;
        for(int i=0;i<ll-1;++i)
        {
         if(a[i]+temp<b[i])
         {
             c[i]=10+a[i]+temp-b[i];
             temp=-1;
         }
         else
         {
             c[i]=a[i]+temp-b[i];
             temp=0;
         }
        }
        c[ll-1]=a[ll-1]+temp-b[ll-1];
    }
    void output()
    {
        for(int i=ll-1;i>=0;--i)
        {
            if(c[i]==0) ll--;
            else break;
        }
        for(int i=ll-1;i>=0;--i)
        {
            cout<<c[i];
        }
        cout<<endl;
    }
    
    int main()
    {
    input();
    rever();
    
    minis();
    output();
    
    return 0;
    }
  • 相关阅读:
    hdu1213
    [转]图论题集
    树剖题集
    【Python学习之旅】---线程的调用以及join方法
    【Python学习之旅】---自定制property
    【Python学习之旅】---描述符+装饰器应用
    【Python学习之旅】---类的装饰器
    【Python学习之旅】---描述符的应用
    【Python学习之旅】---上下文管理协议
    筱玛的迷阵探险(折半搜索+01字典树)
  • 原文地址:https://www.cnblogs.com/weiweiyi/p/5130273.html
Copyright © 2020-2023  润新知