大数乘法

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 收藏
 关注
给出2个大整数A,B,计算A*B的结果。
 
Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Input示例
123456
234567
Output示例
28958703552
相关问题
大数加法
0
 
大数开平方 
640
 
 
大数进制转换 
320
 
 
大数除法 
320
 
 
大数乘法 V2 
80
 
 
代码:
 1 #include<cstdio>
 2 #include<cstring>
 3 const int maxn = 1010;
 4 char a[maxn],b[maxn];
 5 int aa[maxn],bb[maxn],c[2020];
 6 int main()
 7 {
 8     int i,j;
 9     while(scanf("%s %s",a,b)!=EOF)
10     {
11         if(a[0]=='0'||b[0]=='0') {printf("0\n");continue;}
12         memset(c,0,sizeof(c));
13         int l1=strlen(a),l2=strlen(b);
14         for(i=0;i<l1;i++)
15             aa[i]=a[l1-i-1]-'0';
16         for(i=0;i<l2;i++)
17             bb[i]=b[l2-i-1]-'0';
18         for(i=0;i<l1;i++)
19         {
20             for(j=0;j<l2;j++)
21             {   
22                 c[i+j]=aa[i]*bb[j]+c[i+j];
23                 c[i+j+1]=c[i+j+1]+c[i+j]/10;
24                 c[i+j]=c[i+j]%10;
25             }
26         }
27         i=l1+l2;
28         while(!c[i]) i--;
29         for(;i>=0;i--)
30             printf("%d",c[i]);
31         printf("\n");
32     }
33     return 0;
34 }
View Code

 

Java:

 1 import java.util.Scanner;
 2 import java.math.*;
 3 public class Main{
 4 
 5  public static void main(String[] args){
 6   Scanner in=new Scanner(System.in);
 7   //默认分隔符为空格// 
 8   BigInteger a=in.nextBigInteger();
 9   BigInteger b=in.nextBigInteger();
10 
11   System.out.println((a.multiply(b)));
12  }
13 }

 

 

posted @ 2016-04-25 20:59  Vmetrio  阅读(186)  评论(0编辑  收藏  举报