zoukankan      html  css  js  c++  java
  • ab 大数相减

    #include <iostream>
    #include <string>
    
    using namespace std;
    string add(const string& a,const string& b)
    {
        string result;  //用于记录计算结果
        
        int len_a = a.length() - 1;
        int len_b = b.length() - 1;
        int carry = 0;        //进位 
       
        
        for(;len_a>=0 && len_b>=0;len_a--,len_b--)
        {
            int t = (a[len_a] - '0') + (b[len_b] - '0') + carry;
            carry = t/10;
            t %= 10;
            result += char(t+'0');
            
        }
        for(;len_a>=0;len_a--)
        {
            int t = (a[len_a] - '0') + carry;
            carry = t/10;
            t %= 10;
            result += char(t+'0');
            
        }
        
        for(;len_b>=0;len_b--)
        {
            int t = (b[len_b] - '0') + carry;
            carry = t/10;
            t %= 10;
            result += char(t+'0');
            
        }
        if(carry != 0)
        {
           result += char(carry+'0'); 
        }
        //反转 
        int len_r = result.length();
        for(int i = 0;i<len_r/2;i++)
        {
             char temp = result[i];
             result[i] = result[len_r-i-1];
             result[len_r-i-1] = temp;
    
        }
        
        return result;    
    }
    string sub(const string& a,const string& b)
    {
        string result;  //用于记录计算结果
        string big;
        string small;
        
        int len_a = a.length();
        int len_b = b.length();
        int borrow = 0;        //借位 
        int sign = 1;          //符号位 
        if(len_a < len_b)
        {
            sign = -1;
            big = b;
            small = a;
            
        }
        else if(len_a == len_b && a.compare(b)<0)
        {
            sign = -1;
            big = b;
            small = a;
        }
        else
        {
            big = a;
            small = b;
        }
        //big - small
        len_a = big.length() - 1;
        len_b = small.length() - 1;
        for(;len_a>=0 && len_b>=0;len_a--,len_b--)
        {
            int t = big[len_a] - small[len_b] - borrow;
            borrow = (>= 0) ? 0 : 1;
            if(< 0)
            {
                t += 10;
            }
            result += char(t+'0');
            
        }
         for(;len_a>=0;len_a--)
        {
            int t = big[len_a] - '0'- borrow;
            borrow = (>= 0) ? 0 : 1;
            if(< 0)
            {
                t += 10;
            }
             result += char(t+'0');
            
        }
        
        int len_r = result.length();
        for(int i = 0;i<len_r/2;i++)
        {
             char temp = result[i];
             result[i] = result[len_r-i-1];
             result[len_r-i-1] = temp;
    
        }
        string r;
        if(sign == -1)
        {
             r += '-';
        }
        for(int i = 0;i<len_r;i++)
        {
             if(result[i] != '0')
             {
                 r += result.substr(i);
                 break;
             }
    
        }
        
        return r; 
    }
    
    string GetSubResult(const string& a,const string& b)
    {
        string result;
        string aa = a;
        string bb = b;
        if(a[0] != '-' && b[0] == '-')//a - -b = a+b
        {
            bb = b.substr(1);    
            result = add(aa, bb);           
        }
        else if(a[0] == '-' && b[0] != '-')//-a - b = -(a+b)
        {
            aa = a.substr(1); 
            result = '-' + add(aa, bb); 
        }
        else if(a[0] == '-' && b[0] == '-')//-a - -b = b - a
        {
            aa = a.substr(1); 
            bb = b.substr(1);  
            result = sub(bb, aa); 
        }
        else
        {
            result = sub(aa, bb); 
        }
        
        return result;
    }
    
    int main()
    {
        string a, b;
        cin>>a>>b;
        
        cout<<GetSubResult(a, b)<<endl;
    
        return 0;
    }
  • 相关阅读:
    XAF 一对多关系<DC翻译博客二>
    XAF 在BOModel中实现接口<DC翻译博客六>
    XPO – (Gary's post)Stored Procedure Support Coming in V2010 Vol 2 Part1
    XAF 如何从Excel复制多个单元格内容到GridView
    XAF 如何实现对选择的单元格显示矩形框和多单元格的复制及粘贴
    XAF 如何扩展应用程序模型<二> 编辑ListView自动保存
    XAF 模型编辑器
    XAF 用代码扩展和自定义应用程序模型
    XAF 翻译领域构件(DC)技术目录
    XPO (Gary's post)Stored Procedure Support coming in V2010 Vol 2 (Part 2)
  • 原文地址:https://www.cnblogs.com/hbf369/p/2697595.html
Copyright © 2011-2022 走看看