高精度乘法(高精度乘以低精度)

#include<iostream>
#include<vector>
#include<string>

using namespace std;

typedef vector<int> ve;//用ve代替vector<int>,避免麻烦

ve mul(ve &A, int b)
{
    int t = 0;//用t来储存每次相乘的值
    ve C;
    for (int i = 0; i < A.size(); i++)
    {
        t += A[i] * b;
        C.push_back(t % 10);//将相乘的值的个位放入C中
        t /= 10;//高位保留,进入下一次的计算        
    }

    if (t) C.push_back(t);
  while (C.size() > 1 && C.back() == 0) C.pop_back(); return C; } int main() { string sum1;//因为数据太大,所以用string定义来输入 int b; cin >> sum1 >> b; ve A; //循环,将sum1中的值放入A中,倒着放入 for (int i = sum1.size() - 1; i >= 0; i--) A.push_back(sum1[i] - '0'); ve res; res = mul(A, b); for (int i = res.size() - 1; i >= 0; i--)//倒着输出,因为储存是高位在后,低位在前 { cout << res[i]; } return 0; }
posted @ 2021-12-14 14:04  ora12321  阅读(49)  评论(0)    收藏  举报