- C++
高精度乘法模板-高精度乘低精度
- 2023-12-9 16:22:01 @
using namespace std; //使用std命名空间
vector<int> mul(vector<int> &v,int k){ //定义函数mul,用于计算两个数的乘积
vector<int>res; //定义可变数组res
int carry=0; //定义进位变量carry
for(int i=0;i<v.size()||carry;i++){ //遍历可变数组v的每一位,或者还有进位时
if (v.size()>i) carry += v[i]*k; //如果可变数组v已经遍历完,那么加上v[i]*k的剩余部分
res.push_back(carry%10); //将carry的个位数添加到结果可变数组res中
carry/=10; //更新carry进位
// cout<<carry<<endl;
}
while (res.size()>1&&res.back()==0) res.pop_back(); //如果结果可变数组res的最后一个元素为0,则将其弹出
return res; //返回结果可变数组res
}
int main() { //定义主函数main
string s; //定义字符串变量s
int k; //定义整数变量k
vector<int>v,c; //定义可变数组v,c
cin>>s; //输入字符串s
cin>>k; //输入整数k
int n=s.length(); //计算字符串s的长度
for(int i=n-1;i>=0;i--)v.push_back(s[i]-'0'); //将字符串s逆序转换为整数数组v
c = mul(v,k); //计算v和k的乘积,并将结果存储在可变数组c中
for(int i=c.size()-1;i>=0;i--)cout<<c[i]; //将结果可变数组c中的元素从后向前输出
return 0; //返回0
}
0 条评论
目前还没有评论...