高精度乘法
输入:两行,每行表示一个非负整数(不超过10000位)
输出:两数的乘积。
样例1
样例输入1
99
101
样例输出1
9999
Java版:
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); BigInteger a = sc.nextBigInteger(); BigInteger b = sc.nextBigInteger(); System.out.println(a.multiply(b)); } }
C++版:
#include<bits/stdc++.h> using namespace std; int main(){ char st1[10005],st2[10005]; int a[10005],b[10005],c[20005]; int i,j,len1,len2; cin >> st1 >> st2; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); len1=strlen(st1); len2=strlen(st2); j=1; for (i=len1-1;i>=0;i--){ a[j++]=st1[i]-'0'; } j=1; for (i=len2-1;i>=0;i--){ b[j++]=st2[i]-'0'; } for(i=1;i<=len1;i++) for (j=1;j<=len2;j++) c[i+j-1]+=a[i]*b[j]; for(i=1;i<len1+len2;i++){ c[i+1]+=c[i]/10; c[i]%=10; } while (!c[i] && i>1){ i--; } while (i){ printf("%d",c[i--]); } printf("\n"); return 0; }
文章来源: 高精度乘法