//acwing 793
#include <iostream>
#include <vector>
using namespace std;
vector<int> sub(vector<int> &A, int b)
{
vector<int> C;
int t = 0; //上一位的进位
for (int i = 0; i < A.size(); i ++ )
{
t += A[i] * b;
C.push_back(t % 10);
t /= 10; //下一位的进位
}
if (t) C.push_back(t); //最高位如果有进位,将进位加到数组中
while (C.size() > 1 && C.back() == 0) C.pop_back(); //去掉前导0
return C;
}
int main()
{
string a; //高精度长整数用string保存
int b; //普通整数
cin >> a >> b;
//高精度长整数保存到数组中 --> 从低位到高位保存
vector<int> A;
for (int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');
auto C = sub(A, b);
for (int i = C.size() - 1; i >= 0; i -- ) printf("%d", C[i]);
return 0;
}
(C++) 基础算法学习:高精度乘法
最新推荐文章于 2024-05-04 15:29:43 发布