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

    #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;
    }
  • 相关阅读:
    C# 打印PPT幻灯片
    Java 创建/识别条形码、二维码
    Java 添加Word文本框
    Java 复制PPT幻灯片
    C# 读取Word内容控件
    Java 操作Word书签(三):用文本、图片、表格替换书签
    Java 操作Word书签(二):添加文本、图片、表格到书签内容
    C#/Java 动态生成电子发票
    C# 复制Excel单元格格式
    Java 操作Word书签(一):添加、删除、读取书签
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9427256.html
Copyright © 2011-2022 走看看