脚本宝典收集整理的这篇文章主要介绍了acwing-793. 高精度乘法,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
给定两个非负整数(不含前导 0) A 和 B,请你计算 A×B 的值。
共两行,第一行包含整数 A,第二行包含整数 B。
共一行,包含 A×B 的值。
1≤A的长度≤100000, 0≤B≤10000
2
3
6
把题给看错了,以为是0≤B的长度≤10000
的高精×高精,还算了一下64MB够用个JB。。硬着头皮写了一下,不过这个版本也AC了,想必高精×低精也..,就懒得写了
#include <bits/stdc++.h>
using namespace std;
char a[100010], b[100010];
int main() {
scanf("%s%s", &a, &b);
int la = strlen(a) - 1, lb = strlen(b) - 1;
for (int i = 0; i <= la; i++) a[i] -= '0';
for (int i = 0; i <= lb; i++) b[i] -= '0';
for (int i = 0; i <= la/2; i++) swap(a[i], a[la-i]);
for (int i = 0; i <= lb/2; i++) swap(b[i], b[lb-i]);
vector<int> res;
for (int i = 0; i <= lb; i++) res.push_back(0);
for (int i = 0; i <= la; i++) {
for (int j = 0; j <= lb; j++) {
res[j + i] += a[i] * b[j];
}
res.push_back(0);
}
int index = res.size() - 1, c = 0, p;
while (index > 0 && !res[index]) index--;
for (int i = 0; i <= index; i++) {
p = res[i] + c;
c = p / 10; p %= 10;
res[i] = p;
}
if (c != 0) res[++index] = c;
while (index >= 0) cout << res[index--];
}
以上是脚本宝典为你收集整理的acwing-793. 高精度乘法全部内容,希望文章能够帮你解决acwing-793. 高精度乘法所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。