OpenJudge百炼-2980-大整数乘法-C语言-高精度计算

描述:
求两个不超过200位的非负整数的积。
输入:
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
输出:
一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入:
12345678900
98765432100
样例输出:
1219326311126352690000

#include <stdio.h>
#include <string.h>
int num1[200],num2[200],res[401];
char line1[201],line2[201];
int main()
{
    gets(line1);
    gets(line2);
    int i,j,len1 = strlen(line1),len2 = strlen(line2);
    for(i = len1-1,j=0;i >= 0;i--,j++)
        num1[j] = line1[i] - '0';
    for(i = len2-1,j=0;i >= 0;i--,j++)
        num2[j] = line2[i] - '0';
    for(i = 0;i < len1;i++)
        for(j = 0;j < len2;j++)
            res[i+j] += num1[i] * num2[j];
    for(i = 0;i <= len1+len2;i++)
    {
        res[i+1] += res[i]/10;
        res[i] = res[i]%10;
    }
    while(!res[i] && i >= 0)i--;
    if(i == -1)
        printf("0");
    else
        while(i >= 0)
            printf("%d",res[i--]);
    return 0;
}
    原文作者:大整数乘法问题
    原文地址: https://blog.csdn.net/OrdinaryCrazy/article/details/77146240
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞