高精度乘法

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> a,b;
	string m,n;
	cin>>m>>n;
	for(int i=m.size()-1;i>=0;i--){
		a.push_back(m[i]-'0'); 
	}
	for(int i=n.size()-1;i>=0;i--){
		b.push_back(n[i]-'0');
	}
	vector<int> c(a.size()+b.size()+10,0);
	int sum=0;
	for(int i=0;i<a.size();i++){
        for(int j=0;j<b.size()||sum;j++){
        	c[i+j]+=a[i]*b[j];
		}
    }
	for(int i=0;i<a.size()||sum;i++){
		sum+=c[i];
        c[i]=sum%10;
        sum=sum/10;
	}
	while(c.size()>1&&c.back()==0){
		c.pop_back();
	}
	for(int i=c.size()-1;i>=0;i--){
		cout<<c[i];
	}
	return 0;
}

  

posted @ 2024-05-25 10:02  王ys  阅读(13)  评论(0编辑  收藏  举报