• 大数乘法


    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define MaxSize 1000
    
    char *TwoBigNumMult(char *InputMultiplier_1,char *InputMultiplier_2)
    {
        int *TempResult = malloc(MaxSize*sizeof(int));
        int TempResultEnd = 0;
        memset(TempResult,0,MaxSize*sizeof(int));
        
        
        int MultiplierLen_1 = strlen(InputMultiplier_1);
        int MultiplierLen_2 = strlen(InputMultiplier_2);
        char *Result = malloc((MultiplierLen_1+MultiplierLen_2+2)*sizeof(char));
        memset(Result,0,sizeof(Result));
        int ResultEnd = 0;
        
        //Plus && Carry
        int MultiplierEnd_1,MultiplierEnd_2;
        for(MultiplierEnd_1 = 0;MultiplierEnd_1 < MultiplierLen_1;MultiplierEnd_1 ++)
        {
            for(MultiplierEnd_2 = 0;MultiplierEnd_2 < MultiplierLen_2;MultiplierEnd_2 ++)
            {
                TempResult[MultiplierEnd_1 + MultiplierEnd_2 + 1] 
                +=  (InputMultiplier_1[MultiplierEnd_1]-'0') * (InputMultiplier_2[MultiplierEnd_2]-'0');
            }
        }
        
        int CarryEnd;
        for(CarryEnd = MultiplierLen_1+MultiplierLen_2 - 1;CarryEnd > 0;CarryEnd --)
        {
            if(TempResult[CarryEnd] >= 10)
            {
                TempResult[CarryEnd-1] += TempResult[CarryEnd] / 10;
                TempResult[CarryEnd] %= 10;
            }
        }
        
        //store to return
        //0 screening
        int OutputFlag = 0;
        for(;TempResult[TempResultEnd]==0 && TempResultEnd < MultiplierLen_1+MultiplierLen_2;TempResultEnd ++)
            ;
        for(ResultEnd = 0;TempResultEnd < MultiplierLen_1+MultiplierLen_2;ResultEnd ++,TempResultEnd ++)
        {
            Result[ResultEnd] = TempResult[TempResultEnd] + '0';
            OutputFlag = 1;
        }
        if(!OutputFlag)
        {
            Result[ResultEnd++] = '0';
        }
        Result[ResultEnd] = '';
        return Result;
    }
    
    int main()
    {
        char InputMultiplier_1[MaxSize] = "10";
        char InputMultiplier_2[MaxSize] = "0";
        
        char *Result = TwoBigNumMult(InputMultiplier_1,InputMultiplier_2);
        puts(Result);
        return 0;
    }
  • 相关阅读:
    20175318 2018-2019-2 实验一《Java开发环境的熟悉》实验报告
    修改 IntelliJ IDEA 默认配置路径
    《Java程序设计》 第三周学习任务
    计算机网络第七版(谢希仁著)课后习题答案
    VMware虚拟机安装苹果Mac OS
    使用Xshell在Windows系统和Linux系统之间进行文件传输
    python:常用模块
    python:模块
    python:函数
    python字符编码与转码
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9427256.html
Copyright © 2020-2023  润新知