加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

51Nod-1027-大数乘法

发布时间:2021-05-30 22:39:24 所属栏目:大数据 来源:网络整理
导读:给出2个大整数A,B,计算A*B的结果。 Input 第1行:大数A 第2行:大数B (A,B的长度 = 1000,A,B = 0) Output 输出A * B Input示例 123456 234567 Output示例 28958703552 水题,不多解释了,就是字符串的处理! 代码C: #include stdio.h#include string.h

给出2个大整数A,B,计算A*B的结果。
Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Input示例
123456
234567
Output示例
28958703552

水题,不多解释了,就是字符串的处理!

代码C:

#include <stdio.h>
#include <string.h>
#define _MAX 1001

void Carrying(int tag,int i,int j,int *p);
int main(int argc,const char * argv[])
{
    int product[2 * _MAX],i=0,j=0,numOneLen,numTwoLen,tag;
    char numOne[_MAX],numTwo[_MAX];
    memset(product,0,sizeof(int) * 2 * _MAX);                    //初始化product数据为0
    scanf("%s %s",numOne,numTwo);                    //存数据

    numOneLen=(int)strlen(numOne);
    numTwoLen=(int)strlen(numTwo);

    //数据逆序
    for (i=0; i<numOneLen/2; i++)
    {
        tag=numOne[i];
        numOne[i]=numOne[numOneLen-1-i];
        numOne[numOneLen-1-i]=tag;
    }
    for (i=0; i<numTwoLen/2; i++)
    {
        tag=numTwo[i];
        numTwo[i]=numTwo[numTwoLen-1-i];
        numTwo[numTwoLen-1-i]=tag;
    }

    //逐位相乘
    for (i=0; i<numOneLen; i++)
    {
        for (j=0; j<numTwoLen; j++)
        {
            tag=((int)numOne[i]-48)*((int)numTwo[j]-48);
            Carrying(tag,i,j,product);                          //递归
        }
    }

    //倒序输出结果
    for (i=_MAX * 2 - 1; i>0; i--)
    {
        if (product[i]!=0)
        {
            break;                                                          //查找到第一个不等于0的跳出
        }
    }
    for (j=i; j>=0; j--)
    {
        printf("%d",product[j]);
    }
    printf("n");
    return 0;
}

//递归进位函数
void Carrying(int tag,int *p)
{
    p[i+j]+=tag;
    if (p[i+j]>9)
    {
        tag=p[i+j]/10;
        p[i+j] %=10;
        Carrying(tag,i+1,p);                                //写成Carrying(tag,j+1,p);也成立,为了让i+j递增而已
    }
    return ;
}

题是很水,但是代码还是挺长的……OVER!!!

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读