大整数乘法(非分治算法)

题目描述

Calculate a*b

输入

Two integer a,b (0<=a,b<=101000)

输出

Output a * b

样例输入

5 7

样例输出

35

#include
#include
#include
const long int N=100000;
using namespace std;

char str1[N], str2[N];
int num1[N], num2[N], ans[N]={0};

int main()
{
    gets(str1);
    gets(str2);
    int m=0,n=0;
    while(str1[m])
    {
        num1[m]=str1[m]-'0';
        m++;
    }
    while(str2[n])
    {
        num2[n]=str2[n]-'0';
        n++;
    }
    int up, temp, i, j, k, p;
    for(i=m-1, k=0; i>=0; i--, k++)
    {
        temp=0;
        up=0;
        for(j=n-1, p=0; j>=0; j--, p++)
        {
            temp=num1[i]*num2[j]+up+ans[k+p];
            ans[k+p]=temp%10;
            up=temp/10;
        }
        if(up>0)
            ans[k+p]=up;
    }
    int len= m*n;
    while(!ans[len--]);
    for(int i=len+1; i>=0; i--)
        cout<

    原文作者:大整数乘法问题
    原文地址: https://blog.csdn.net/sinat_36437707/article/details/66211230
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞