• 大整数乘法(高精度乘法)


    题目链接:https://www.luogu.org/problem/P1303

    题目描述

    求两数的积。

    输入格式

    两行,两个数。

    输出格式

    输入输出样例

    输入 #1
    1 
    2
    输出 #1
    2

    说明/提示

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

    c++代码:

    #include<iostream>
    #include<cstring>
    using namespace std;
    int main()
    {
        string a;
        string b;
        cin>>a;
        cin>>b;
        if(a=="0"||b=="0") cout<<"0";
        int A[10000]={0},B[10000]={0},C[10000]={0};//A用来存a中的每一个数 。。。。C用来存a和b的每一位数相乘的结果 
        int alen=a.length();
        int blen=b.length();
        int i,j;
        for(i=0;i<=alen;i++)
            A[alen-i]=a[i]-'0';//将a的每一位数转化为整数并逆序存入到A中 
        for(j=0;j<=blen;j++)
            B[blen-j]=b[j]-'0';//b的每一位数转化为整数并逆序存入到B中 
        for(i=1;i<=blen;i++)//外层为乘数;与b的每一位相乘; 
        {
             int x=0; //记录进位数 
            for(j=1;j<=alen;j++)
            {
                C[i+j-1]=C[i+j-1]+x+A[j]*B[i];//当前位置的的数等于当前位置的数加上上一个数的进位数再加A[j]*B[i]
                x=C[i+j-1]/10;//当前位置数该向下一位进的位 
                C[i+j-1]=C[i+j-1]%10;//进位之后的数 
            }
          C[i+alen]=x;//内层循环完了,将剩下的进位数进给下一位 
        }
        int clen=alen+blen;
        while(C[clen]==0)
           clen--;//找出前缀0; 
        for(i=clen;i>0;i--)
          cout<<C[i];//反向输出; 
        return 0;
     } 
  • 相关阅读:
    密码加密
    注册视图
    session会话
    验证码功能
    使用Django表单替代html表单
    实现登陆视图功能
    设计登陆需求页面
    配置视图
    配置数据库
    npm 学习
  • 原文地址:https://www.cnblogs.com/zhoubo123/p/11369039.html
Copyright © 2020-2023  润新知