#define _CRT_SECURE_NO_WARNINGS 1
#include <bits/stdc++.h>
using namespace std;
vector<int> c3;
void JW(int n,int i) {
//那一位不存在
if ((signed int)(c3.size()-1)<i) {
if (n>=10){
c3.push_back(n % 10);
c3.push_back(n / 10);
}
else {
c3.push_back(n);
}
}
else {
//那一位存在
n = n + c3.at(i);
if (n>=10) {
c3.at(i) = n % 10;
JW(n / 10,i+1);
}
else {
c3.at(i) = n;
}
}
}
void PR() {
reverse(c3.begin(), c3.end());
vector<int>::iterator vv = c3.begin();
while ((vv != c3.end())&& (*vv == 0)) {
vv++;
}
if (vv==c3.end()) {
printf("0");
}
else {
for (vv; vv != c3.end(); vv++) {
printf("%d", *vv);
}
}
}
void XC(vector<int>* G,vector<int>* D) {
//倒叙遍历位数低的
for (vector<int>::iterator c1 = D->begin(); c1 != D->end(); c1++) {
//遍历高位的每一位
for (vector<int>::iterator c2 = G->begin(); c2 != G->end(); c2++) {
int number = (*c1) * (*c2);
JW(number, (c1-(D->begin()))+(c2-(G->begin())));
}
}
}
int main() {
vector<int> c1;
vector<int> c2;
char c;
//读取第一个数存入容器
while ((c = getchar()) != '\n' && c != EOF) {
c1.push_back(c-'0');
}
//读取第二个数存入容器
while ((c = getchar()) != '\n' && c != EOF) {
c2.push_back(c-'0');
}
reverse(c1.begin(), c1.end());
reverse(c2.begin(), c2.end());
//判断哪个数更大
c1.size() > c2.size() ? XC(&c1, &c2) : XC(&c2, &c1);
PR();
}
为什么一个测试点过不了 自己测试的没问题