zoukankan      html  css  js  c++  java
  • 大数相乘法

    题目:输入两个数,输出两个数相乘的结果

    输入样例:

    12345678900
    98765432100

    输出样例:

    1219326311126352690000

    #include <iostream>
    #include <math.h>
    #include <algorithm>
    #include <string.h>
    using namespace std;
    
    int n,m,k,ans;
    int dp[51][51][51][51],g[1000];
    bool vis[105];
    char ss[105];
    string s;
    string BigMult(string a,string b){          //a 被乘数  b乘数 
        int al=a.length();                        //相乘时,被乘数从低位到高位逐步相乘乘数的低到高位 相乘的每一位都保存到数组 
        int bl=b.length();
        int cl=0;
        for(int i=al-1;i>=0;i--){                //被乘数的低到高位 
            for(int j=bl-1;j>=0;j--){            //乘数的低到高位 
                g[cl]+=(a[i]-'0')*(b[j]-'0');   //位累加 
                cl++;                            //每操作一次长度加一 
            }
            if(i!=0)                            //没有到最后一位的话,下一次累加位是从上一次长度cl+1-被乘数长度开始  
            cl-=(bl-1);
        }
        for(int i=0;i<cl;i++){                    //对相加结果的数组进行进位 
            if(g[i]>10){
                long t=g[i];
                g[i]=t%10;
                g[i+1]+=t/10;
                if(i==cl-1){                    //数的最高位发生了进位,则长度加一 
                    cl++;
                }
            }
        }
        string str="";                            //将结果转为字符串并返回 
        for(int i=cl-1;i>=0;i--){
            str+=(g[i]+'0');
        }
        return str;
    }
    int main() {
        string a,b;
        cin>>a>>b;
        
        cout<<BigMult(a,b); 
    }
  • 相关阅读:
    MySQL锁总结
    DDL和DML
    字节、字、位、比特之间的关系
    Mysql数据库、表设计规范指南
    Mysql性能优化关键配置指南
    3.python正则匹配不到内容时消耗大量内存
    1. postman使用
    2. python提示:TypeError: unhashable type: 'list'
    14. selenium的Page Object模型
    12.unittest的学习
  • 原文地址:https://www.cnblogs.com/xusi/p/12724859.html
Copyright © 2011-2022 走看看