AcWing 793. 高精度乘法(C++)
原题链接
简单
作者:
你叫我怎么荔枝
,
2024-04-07 00:18:31
,
所有人可见
,
阅读 2
题目思路
用高精度的_每一位_去乘低精度的_整体_,
每一位的积加上前一位的进位后
1.对10_取余_ 即此位值
2._除以_10更新进位(进给下一位的)
C++ 代码
#include<iostream>
#include<vector>
//高精度乘法思路:用高精度的每一位去乘低精度的整体,每一位的积加上前一位的进位后 1.对10取余 即此位值
//2.除以10更新进位(进给下一位的)。
using namespace std;
vector<int> A;
vector<int>C;
vector<int>mul(vector<int>A,int b){
int t = 0;
for(int i=0;i<A.size()||t;i++){
if(i<A.size()) t+=A[i]*b; //用当前位乘以b再加上前一位的进位,对10取余即为当前位对应结果值
C.push_back(t%10);
t/=10; // 除以10得到进位值
}
//去除前导0
while(C.back()==0&&C.size()>1) C.pop_back();
return C;
}
int main(){
int b;
string x;
cin>>x>>b;
for (int i = x.size()-1; i >= 0 ; i -- )A.push_back(x[i]-'0');
mul(A,b);
for (int i = C.size()-1; i >= 0; i -- ) printf("%d",C[i]);
return 0;
}