C++代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string big_number_multiply(string a, string b)
{
int a_len = a.length(), b_len = b.length(), len = a_len + b_len;
vector<int> c(a_len + b_len, 0);
len = a_len + b_len;
for (int i = 0; i < b_len; ++i)
{
for (int j = 0; j < a_len; ++j)
{
c[i + j] += (b[b_len - i - 1] - '0') * (a[a_len - j - 1] - '0');
}
}
string res;
res.resize(len);
int inc = 0; // 进位
for (int i = 0; i < len; ++i)
{
c[i] += inc;
inc = c[i] / 10;
c[i] %= 10;
res = (char)(c[i] + '0') + res;
}
if (inc != 0)
{
res = (char)(inc + '0') + res;
}
// 最高位为0 需要去除
int idx = 0;
while (res[idx] == '0') idx++;
return res.substr(idx, res.size());
}
int main(void)
{
string s1, s2;
cin >> s1 >> s2;
cout << big_number_multiply(s1, s2) << endl;
return 0;
}
Java代码
利用大整数类
import java.util.Scanner;
import java.math.BigInteger;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
BigInteger a, b;
while (cin.hasNext())
{
a = cin.nextBigInteger();
b = cin.nextBigInteger();
System.out.println(a.multiply(b).toString());
}
}
}