【acwing】793. 高精度乘法

给定两个正整数 A 和 B,请你计算 A×B

的值。
输入格式

共两行,第一行包含整数 A
,第二行包含整数 B

。
输出格式

共一行,包含 A×B

的值。
数据范围

1≤A的长度≤100000
,
0≤B≤10000

输入样例:

2
3

输出样例:

6
//大数×小数 C = A * b, A >= 0, b > 0 
//把b(小数)看成一个整体分别和a的每一位相乘
#include<iostream>
#include<vector>
#include<string.h>
using namespace std;

vector<int> mul(vector<int> &A,int b){
    
    
    vector<int> C;
    int t=0;//进位
    for(int i=0;i<A.size() ;i++){
    
    
        if(i<A.size()) t=t+A[i]*b;
        C.push_back(t%10);
        t=t/10;
    }
    
    if(t){
    
    
        C.push_back(t);
    }
    
    //去除前导0
    while(C.size()>1 && C.back()==0){
    
    
        C.pop_back();
    }
    return C;
}

int main(){
    
    
    string a;
    int b;
    vector<int> A;
    
    cin>>a>>b;
    for(int i=a.size()-1;i>=0;i--){
    
    
        A.push_back(a[i]-'0');
    }
    
    auto C=mul(A,b);
    
    for(int i=C.size()-1;i>=0;i--){
    
    
        cout<<C[i];
    }
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43531919/article/details/115255151