• HDU


    一道很基础的大整数加法。

    简单的说一下思路吧。

    先用字符串读取两个大数。首先需要把数组给初始化为0方便以后处理,然后对数组逆序对齐处理,接着相加转化后的两个数组并把之存进结果数组里面,最后对结果数组进行进位处理。

    看代码吧。

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <algorithm>
    #include <queue>
    #include <stack>
    #define LL long long
    #define mem(a) memset(a,0,sizeof(a))
    using namespace std;
    char A[1005],B[1005];
    int a[1005],b[1005],c[1005];
    void nixu()
    {
        mem(a);
        mem(b);
        mem(c);
        int k,len=0;
        k=strlen(A);
        for(int i=k-1;i>=0;i--)
            a[len++]=A[i]-'0';
        k=strlen(B);
        len=0;
        for(int i=k-1;i>=0;i--)
            b[len++]=B[i]-'0';
        return ;
    }
    void slove()
    {
        int k;
        k=strlen(A)>strlen(B)?strlen(A):strlen(B);
        for(int i=0;i<k;i++)
            c[i]=a[i]+b[i];
        for(int i=0;i<k;i++)
        {
            if(c[i]>9)
            {
                c[i+1]+=c[i]/10;
                c[i]=c[i]%10;
            }
        }
    }
    int main()
    {
        int T,flag,i=1;
        scanf("%d",&T);
        while(T--)
        {
            flag=0;
            scanf("%s%s",A,B);
            nixu();
            slove();
            printf("Case %d:
    %s + %s = ",i++,A,B);
            for(int i=1000;i>=0;i--)
            {
                if(c[i]!=0||flag==1)
                {
                    printf("%d",c[i]);
                    flag=1;
                }
            }
            printf("
    ");
            if(T!=0)
                printf("
    ");
        }
    }
    View Code
  • 相关阅读:
    C# 类动态添加属性、方法(Z)
    WPF三大模板简介(Z)
    C# mongodb 驱动操作(Z)
    解析Exception和C#处理Exception的常用方法总结
    创建 WPF 工具箱控件
    WPF 线程 Dispatcher
    Path
    C#操作字符串方法总结<转>
    P2058 海港
    P2234 [HNOI2002]营业额统计
  • 原文地址:https://www.cnblogs.com/zznu17-091041/p/8407773.html
Copyright © 2020-2023  润新知