作者:云小逸
个人主页:云小逸的主页
Github:云小逸的Github
motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。==希望春天来之前,我们一起面朝大海,春暖花开!==
专栏:C++ 专栏:Java语言
专栏:C语言初阶专栏:数据结构
今天这一篇文章是借着上面一篇文章继续写关于高精度的问题:高精度乘法和高精度除法。
如果有错误,请谅解,请私信于我,谢谢!
——————————————————————————————
给定两个非负整数(不含前导 0) A 和 B,请你计算 A×B 的值。
共两行,第一行包含整数 A,第二行包含整数 B。
共一行,包含 A×B 的值。
1≤A的长度≤100000,
0≤B≤10000
2
3
6
先实现一个函数mul,它可以将一个整数向量A和一个整数b相乘,并返回一个新的整数向量C。在main函数中,它首先从输入中读取一个字符串a和一个整数b,然后将字符串a转换为整数向量A,最后调用mul函数将A和b相乘,并将结果输出到屏幕上。
#include
#include
using namespace std;
vector<int> mul(vector<int> &A, int b)
{
vector<int> C;
int t = 0;
for (int i = 0; i < A.size() || t; i ++ )
{
if (i < A.size()) t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
while (C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
int main()
{
string a;
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 = mul(A, b);
for (int i = C.size() - 1; i >= 0; i -- ) printf("%d", C[i]);
return 0;
}
给定两个非负整数(不含前导 0) A,B,请你计算 A/B 的商和余数。
共两行,第一行包含整数 A,第二行包含整数 B。
共两行,第一行输出所求的商,第二行输出所求余数。
1≤A的长度≤100000,
1≤B≤10000,
B 一定不为 0
7
2
3
1
先实现一个整数除法的功能,它接受一个字符串表示的被除数和一个整数表示的除数,然后计算出商和余数,最后将结果输出到控制台。
#include
#include
#include
using namespace std;
vector<int> div(vector<int> &A, int b, int &r)
{
vector<int> C;
r = 0;
for (int i = A.size() - 1; i >= 0; i -- )
{
r = r * 10 + A[i];
C.push_back(r / b);
r %= b;
}
reverse(C.begin(), C.end());
while (C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
int main()
{
string a;
vector<int> A;
int B;
cin >> a >> B;
for (int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');
int r;
auto C = div(A, B, r);
for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
cout << endl << r << endl;
return 0;
}
十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:
1.小时候的难过会挂在嘴边,长大了才知道,真正的难过是表现不出来的。
2.不是努力了就有回报的,有些人光活着就要拼尽全力。
3.受了天大的委屈也一声不吭,一句安慰,却让我眼里进了风沙。
4.希望你永远都不会懂什么是:万般皆是命,半点不由人
5.所谓现实就是,人没有钱就不如鬼,汤没有盐就不如水,慢慢地你就会发现,一颗好的心,比不上一张好的嘴。
最后如果觉得我写的还不错,请不要忘记点赞✌,收藏✌,加关注✌哦(。・ω・。)
愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚菜鸟逐渐成为大佬。加油,为自己点赞!