• 【洛谷P1303 A*B Problem】


    题目描述

    求两数的积。

    输入输出格式

    输入格式:

    两行,两个数。

    输出格式:

    输入输出样例

    输入样例#1: 
    1 
    2
    输出样例#1: 
    2

    说明

    每个数字不超过10^2000,需用高精

    emm,显然本题需要用高精:高精,顾名思义,高精度运算,简洁来说就是很大的数字进行运算。

    乘法中也运用了一些思想;比如说对于进位的处理(我用的是x)

    先看看代码吧

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<algorithm>
    #include<iomanip>
    using namespace std;
    int main()
    {
        char a1[2001],b1[2001];
        int a[2001]={},b[2001]={},c[200001]={},lena,lenb,lenc,i,j,x;
        scanf("%s",a1);
        scanf("%s",b1);
        lena=strlen(a1);lenb=strlen(b1);
        for(i=0;i<=lena-1;i++) a[lena-i]=a1[i]-48;
        for(i=0;i<=lenb-1;++i) b[lenb-i]=b1[i]-48;
        for(i=1;i<=lena;++i)
        {
            x=0;
            for(j=1;j<=lenb;j++)
            {
                c[i+j-1]=a[i]*b[j]+x+c[i+j-1];
                x=c[i+j-1]/10;
                c[i+j-1]%=10;
            }
            c[i+lenb]=x;
        }
        lenc=lena+lenb;
        while(c[lenc]==0&&lenc>1)
           lenc--;
        for(i=lenc;i>=1;i--)
           cout<<c[i];
        cout<<endl;
        return 0;
    }

    这就是比较传统的思想,对于进位的处理相对来说较容易理解(但代码有些麻烦)

    通过熟练后也可以根据自己的码风来进行修改

  • 相关阅读:
    大数据学习操作笔记
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    jstl标签,c:foreach无效的问题
    阅读笔记
    《高效能人士的7个习惯》
  • 原文地址:https://www.cnblogs.com/gongcheng456/p/10464297.html
Copyright © 2020-2023  润新知