java版:
import java.math.*;
import java.util.*;
public class Main
{
static public void main(String[] args)
{
Scanner cin = new Scanner(System.in);
BigInteger a = cin.nextBigInteger();
BigInteger b = cin.nextBigInteger();
System.out.println(a.multiply(b));
cin.close();
}
}
c++基础版:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char A[1005], B[1005], res[2005];
void solve(char *a, char *b)
{
int a_len = strlen(a); reverse(a, a + a_len);
int b_len = strlen(b); reverse(b, b + b_len);
int t[2005] = {0};
for(int i = 0; i < a_len; i++)
for(int j = 0; j < b_len; j++)
t[i+j] += (a[i] - '0') * (b[j] - '0');
int c = 0;
for(int i = 0; i <= 2000; i++)
{
res[i] = '0' + (t[i] + c) % 10;
c = (t[i] + c) / 10;
}
int e = 2001;
while(e >= 2 && res[e - 1] == '0') e--;
res[e] = '\0';
reverse(res, res + e);
}
int main()
{
while(~scanf("%s%s", A, B))
{
solve(A, B);
printf("%s\n", res);
}
return 0;
}
c++FFT版: