Multiplicação de alta precisão acwing793

#include<iostream>
#include<vector>

using namespace std;

vector<int> mul(vector<int> &A,int b)
{
    
    
	vector<int> C;
	int t=0;
	for(int i=0;i<A.size()||t;i++)//注意加上 ||t!!!
	{
    
    
		if(i<A.size()) t+=A[i]*b;//注意这里是A[i]*b b需要每次都进行乘法
		C.push_back(t%10);
		t/=10;
	}
	while(C.size()>1&&C.back()==0) C.pop_back();//如果一个数乘0那么他就会有很多0,需要被清除 
	return C;
}

int main()
{
    
    
	string a;
	int b;
	cin>>a>>b;
	vector<int> A;
	for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
	vector<int> C=mul(A,b);
	for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
	return 0;
}
// C = A * b, A >= 0, b > 0
vector<int> mul(vector<int> &A, int b)
{
    
    
    vector<int> C;

    int t = 0;
    for (int i = 0; i < A.size() || t; i ++ )
    {
    
    
        if (i < A.size()) t += A[i] * b;
        C.push_back(t % 10);
        t /= 10;
    }

    while (C.size() > 1 && C.back() == 0) C.pop_back();

    return C;
}

Acho que você gosta

Origin blog.csdn.net/qq_47874905/article/details/109455295
Recomendado
Clasificación