高精度乘法

匿名 (未验证) 提交于 2019-12-03 00:22:01

高精度乘法
输入:两行,每行表示一个非负整数(不超过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; } 
文章来源: 高精度乘法
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!