• 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 条评论

目前还没有评论...