• 大数加法


    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define MaxSize 1000
    
    char *TwoBigNumPlus(char *InputAddend_1,char *InputAddend_2)
    {
        char *Result = malloc(MaxSize*sizeof(char));
        int ResultEnd = 0;
        
        int AddendLen_1 = strlen(InputAddend_1);
        int AddendLen_2 = strlen(InputAddend_2);
        
        int Addend_1[MaxSize];
        int Addend_2[MaxSize];
        memset(Addend_1,0,sizeof(Addend_1));
        memset(Addend_2,0,sizeof(Addend_2));
        
        //reverse to store
        int InputAddendEnd,AddendEnd;
        for(InputAddendEnd = AddendLen_1-1,AddendEnd = 0;InputAddendEnd >= 0;InputAddendEnd --)
        {
            Addend_1[AddendEnd ++] = InputAddend_1[InputAddendEnd] - '0';
        }
        for(InputAddendEnd = AddendLen_2-1,AddendEnd = 0;InputAddendEnd >= 0;InputAddendEnd --)
        {
            Addend_2[AddendEnd ++] = InputAddend_2[InputAddendEnd] - '0';
        }
        
        //Plus && Carry
        for(AddendEnd = 0;AddendEnd < MaxSize;AddendEnd ++)
        {
            Addend_2[AddendEnd] += Addend_1[AddendEnd];
            if(Addend_2[AddendEnd] >= 10)
            {
                Addend_2[AddendEnd+1] += Addend_2[AddendEnd] / 10;
                Addend_2[AddendEnd] %= 10;
            }
        }
        
        //store to return
        //0 screening
        for(AddendEnd = MaxSize-1;AddendEnd>=0 && Addend_2[AddendEnd]==0;AddendEnd --)
            ;
        if(AddendEnd >= 0)
        {
            for( ;AddendEnd >= 0;AddendEnd --)
            {
                Result[ResultEnd++] = Addend_2[AddendEnd] + '0';
            }
        }
        else
        {
            Result[ResultEnd++] = '0';
        }
        Result[ResultEnd] = '';
        return Result;
    } 
    
    int main()
    {
        char InputAddend_1[MaxSize] = "99";
        char InputAddend_2[MaxSize] = "99999999";
        
        char *Result = TwoBigNumPlus(InputAddend_1,InputAddend_2);
        puts(Result);
        return 0;
    }
  • 相关阅读:
    Educational Codeforces Round 23 D. Imbalanced Array(单调栈)
    hdu 4355 Party All the Time(三分)
    Educational Codeforces Round 21 F. Card Game(网络流之最大点权独立集)
    qscoj Round 1(div 2)
    玲珑杯 ACM Round #10
    hihoCoder #27
    Codeforces Round #396(div 2)
    高数A(下)第九章
    Mutual Training for Wannafly Union #5
    寒假集训补完
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9427281.html
Copyright © 2020-2023  润新知