大数乘法

来源:互联网 发布:java方法的定义和调用 编辑:程序博客网 时间:2024/05/21 22:43

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版:


0 0