zoukankan      html  css  js  c++  java
  • 高精度乘法(板子)

    #include<bits/stdc++.h>
    using namespace std;
    string a,b;
    void getmul(){
        vector<int>v(a.size()+b.size()-1);///两个数相乘位数最多为两个数位数相加,又数组从0开始记录所以减一
        for(int i=0;i<a.size();i++){///这里是从左往右,虽然和我们的以前默认的计算顺序不一样,但方法是类似的
            int x=a[i]-'0';
            for(int j=0;j<b.size();j++){
                int y=b[j]-'0';
                v[i+j]+=x*y;///i+j表示放到乘完后相应的位置,这里先不用考虑进位
            }
        }
        int add=0;///记录进位
        for(int i=v.size()-1;i>=0;i--){///从低位开始往前进位
            v[i]=v[i]+add;
            add=v[i]/10;
            v[i]%=10;
        }
        while(add!=0){///如果进位不为0,往前添加
            int now=add%10;
            v.insert(v.begin(),now);
            add/=10;
        }
        for(int i=0;i<v.size();i++){
            cout<<v[i];
        }
        cout<<endl;
    }
    int main(){
        cin>>a>>b;
        getmul();
    }

    这里写一个模拟过程,加深一下印象。

    eg       35

           x   63

    ———————————

         18   9  

              30  15

    ———————————

         18  39  15 

    _____________________

          2 2 0 5

  • 相关阅读:
    IIT(ISM) Virtual Farewell E Dictator's plan for Valentine's day! 二分
    HDU
    LightOJ
    HDU 4407 Sum 容斥原理
    HDU 4686 Arc of Dream 矩阵快速幂
    uoj418
    Gym101237C The Palindrome Extraction Manacher
    Codeforces 100032 K
    codechef Suffix Palindromes
    Codeforces 932G Palindrome Partition
  • 原文地址:https://www.cnblogs.com/mohari/p/13581702.html
Copyright © 2011-2022 走看看