zoukankan      html  css  js  c++  java
  • 大数加法

    #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;
    }
  • 相关阅读:
    第一周作业
    模拟赛3 题解
    模拟赛2 题解
    [HNOI2008]GT考试 题解
    NOI Online 提高组 题解
    模拟赛1 题解
    知识点拾遗
    [NOIp2012]疫情控制 题解
    [CEOI2002]Bugs Integrated, Inc. 题解
    [NOIp2017]宝藏 题解
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9427281.html
Copyright © 2011-2022 走看看