• 存一下大数加减法


    //加法
    #include<map>
    #include<set>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<math.h>
    #include<cstdio>
    #include<sstream>
    #include<numeric>//STL数值算法头文件
    #include<stdlib.h>
    #include <ctype.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    #include<functional>//模板类头文件
    using namespace std;
    
    typedef long long ll;
    const int maxn=1100;
    const int INF=0x3f3f3f3f;
    
    string a,b;
    
    string add(string a,string b)
    {
        string s;
        reverse(a.begin(),a.end());
        reverse(b.begin(),b.end());
        int i=0;
        int m,k=0;
        while(a[i]&&b[i])
        {
            m=a[i]-'0'+b[i]-'0'+k;
            k=m/10;
            s+=(m%10+'0');
            i++;
        }
        if(i==a.size())
        {
            while(i!=b.size())
            {
                m=k+b[i]-'0';
                k=m/10;
                s+=m%10+'0';
                i++;
            }
            if(k) s+=k+'0';
        }
        else if(i==b.size())
        {
            while(i!=a.size())
            {
                m=k+a[i]-'0';
                k=m/10;
                s+=m%10+'0';
                i++;
            }
            if(k) s+=k+'0';
        }
        reverse(s.begin(),s.end());
        return s;
    }
    
    int main()
    {
        while(cin>>a>>b)
        {
            cout<<add(a,b)<<endl;
        }
        return 0;
    }
    
    
    
    
    
    //减法
    
    需要比较大小,来决定结果正负
    核心代码:
     for(int i=0; i<100; i++)
                {
                    sum=k[i]-f[i];
                    if(sum<0)
                    {
                        d[p++]=sum+10;
                        k[i+1]=k[i+1]-1;
                    }
                    else
                    {
                        d[p++]=sum;
                    }
                }
    #include<stdio.h>
    #include<string.h>
    char n[100000];
    int d[100000];
    int  e[100000];
    char s[100000];
    int f[100000];
    int k[100000];
    int main()
    {
        int t;
        while(scanf("%s%s",n,s)!=-1)
        {
            int l;
            l=strlen(n);
            int h;
            h=strlen(s);
            int sum=0;
            int p=0;
            memset(d,0,sizeof(d));
            memset(f,0,sizeof(f));
            memset(k,0,sizeof(k));
            int ni=0,we=0;
            if(h==l)
            {
                int y=0;
                for(int i=0; i<h; i++)
                {
                    if(n[i]!=s[i])
                    {
                        y=-1;
                    }
                }
                if(y==0)
                {
                    printf("0
    ");
                }
                else
                {
                    for(int ii=0; ii<l; ii++)
                    {
                        if(n[ii]>s[ii])
                        {
                            for(int i=l-1; i>=0; i--)
                            {
                                f[ni++]=n[i]-48;
                            }
                            for(int i=h-1; i>=0; i--)
                            {
                                k[we++]=s[i]-48;
                            }
                            for(int i=0; i<100; i++)
                            {
                                sum=f[i]-k[i];
                                if(sum<0)
                                {
                                    d[p++]=sum+10;
                                    f[i+1]=f[i+1]-1;
                                }
                                else
                                {
                                    d[p++]=sum;
                                }
                            }
                            for(int i=p-1; i>=0; i--)
                            {
                                if(d[i]!=0)
                                {
                                    for(int j=i; j>=0; j--)
                                    {
                                        printf("%d",d[j]);
                                    }
                                    printf("
    ");
                                    break;
                                }
                            }
                            break;
                        }
                        else
                        {
                            for(int i=l-1; i>=0; i--)
                            {
                                f[ni++]=n[i]-48;
                            }
                            for(int i=h-1; i>=0; i--)
                            {
                                k[we++]=s[i]-48;
                            }
                            for(int i=0; i<100; i++)
                            {
                                sum=k[i]-f[i];
                                if(sum<0)
                                {
                                    d[p++]=sum+10;
                                    k[i+1]=k[i+1]-1;
                                }
                                else
                                {
                                    d[p++]=sum;
                                }
                            }
                            for(int i=p-1; i>=0; i--)
                            {
                                if(d[i]!=0)
                                {
                                    printf("-");
                                    for(int j=i; j>=0; j--)
                                    {
                                        printf("%d",d[j]);
                                    }
                                    printf("
    ");
                                    break;
                                }
                            }
                            break;
                        }
                    }
                }
            }
            else if(l>h)
            {
                for(int i=l-1; i>=0; i--)
                {
                    f[ni++]=n[i]-48;
                }
                for(int i=h-1; i>=0; i--)
                {
                    k[we++]=s[i]-48;
                }
                for(int i=0; i<100; i++)
                {
                    sum=f[i]-k[i];
                    if(sum<0)
                    {
                        d[p++]=sum+10;
                        f[i+1]=f[i+1]-1;
                    }
                    else
                    {
                        d[p++]=sum;
                    }
                }
                for(int i=p-1; i>=0; i--)
                {
                    if(d[i]!=0)
                    {
                        for(int j=i; j>=0; j--)
                        {
                            printf("%d",d[j]);
                        }
                        printf("
    ");
                        break;
                    }
                }
            }
            else if(h>l)
            {
                for(int i=l-1; i>=0; i--)
                {
                    f[ni++]=n[i]-48;
                }
                for(int i=h-1; i>=0; i--)
                {
                    k[we++]=s[i]-48;
                }
                for(int i=0; i<100; i++)
                {
                    sum=k[i]-f[i];
                    if(sum<0)
                    {
                        d[p++]=sum+10;
                        k[i+1]=k[i+1]-1;
                    }
                    else
                    {
                        d[p++]=sum;
                    }
                }
                for(int i=p-1; i>=0; i--)
                {
                    if(d[i]!=0)
                    {
                        printf("-");
                        for(int j=i; j>=0; j--)
                        {
                            printf("%d",d[j]);
                        }
                        printf("
    ");
                        break;
                    }
                }
            }
        }
    }
    
  • 相关阅读:
    Mysql group_concat
    canvas toDataUrl 跨域问题
    Svg操作
    java 判断浏览器
    排序操作
    java 格式判断
    你真的了解 console 吗
    svg转换工具
    java图片缩放
    常见 银行贷款 名词
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/7264828.html
Copyright © 2020-2023  润新知