C++自存错题(14)
高精度乘法模板题。
题目描述
给出两个非负整数,求它们的乘积。
输入格式
输入共两行,每行一个非负整数。
输出格式
输出一个非负整数表示乘积。
输入输出样例
输入 #1复制
1
2
输出 #1复制
2
说明/提示
每个非负整数不超过 10
2000
。#include <iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<queue>
using namespace std;
int a[1000000], b[1000000], c[1000000];
string a1, b1;
int len = 0;
void ChengJ(string a1, string b1) {
for (int i = 0; i < a1.size(); i++) {
a[a1.size() - 1 - i] = a1[i] - '0';
}
for (int i = 0; i < b1.size(); i++) {
b[b1.size() - 1 - i] = b1[i] - '0';
}
len = a1.size() + b1.size();
for (int i = 0; i < a1.size(); i++) {
for (int j = 0; j < b1.size(); j++) {
c[i + j] += a[i] * b[j];
c[i + j + 1] += c[i + j] / 10;
c[i + j] %= 10;
}
}
}
int main() {
cin >> a1 >> b1;
if ((a1.size() == 1 && a1[0] == '0') || (b1.size() == 1 && b1[0] == '0')) {
cout << 0;
return 0;
}
ChengJ(a1, b1);
for (int i = len-1; i >= 0; i--) {
if (i == len-1 && c[i] == 0) {
continue;
}
else {
cout << c[i];
}
}
return 0;
}
题目描述
给出两个非负整数,求它们的乘积。
输入格式
输入共两行,每行一个非负整数。
输出格式
输出一个非负整数表示乘积。
输入输出样例
输入 #1复制
1
2
输出 #1复制
2
说明/提示
每个非负整数不超过 10
2000
。#include <iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<queue>
using namespace std;
int a[1000000], b[1000000], c[1000000];
string a1, b1;
int len = 0;
void ChengJ(string a1, string b1) {
for (int i = 0; i < a1.size(); i++) {
a[a1.size() - 1 - i] = a1[i] - '0';
}
for (int i = 0; i < b1.size(); i++) {
b[b1.size() - 1 - i] = b1[i] - '0';
}
len = a1.size() + b1.size();
for (int i = 0; i < a1.size(); i++) {
for (int j = 0; j < b1.size(); j++) {
c[i + j] += a[i] * b[j];
c[i + j + 1] += c[i + j] / 10;
c[i + j] %= 10;
}
}
}
int main() {
cin >> a1 >> b1;
if ((a1.size() == 1 && a1[0] == '0') || (b1.size() == 1 && b1[0] == '0')) {
cout << 0;
return 0;
}
ChengJ(a1, b1);
for (int i = len-1; i >= 0; i--) {
if (i == len-1 && c[i] == 0) {
continue;
}
else {
cout << c[i];
}
}
return 0;
}
全部评论
相关推荐
2025-11-12 16:07
郑州轻工业大学 UI设计师 点赞 评论 收藏
分享
阿里云成长空间 763人发布