Java笔试题:两个大数相乘
2013-05-19 17:11
549 查看
import java.util.Scanner;
public class BigMultiTest {
public static void main(String[] args){
Scanner reader=new Scanner(System.in);
String numStr1=reader.next();
String numStr2=reader.next();
int[] intNum1=changetoArray(numStr1);
int[] intNum2=changetoArray(numStr2);
multiply(intNum1,intNum2);
}
public static int[] changetoArray(String numStr){
int length=numStr.length();
int[] intNum=new int[length];
for(int i=0;i<length;i++)
intNum[length-i-1]=Integer.parseInt(String.valueOf((numStr.charAt(i))));
return intNum;
}
public static int[] multiply(int[] num1,int[] num2){
int length1=num1.length;
int length2=num2.length;
int[] result=new int[length1+length2];
for(int i=0;i<length1;i++)
for(int j=0;j<length2;j++){
int temp = result[i + j] + num1[i] * num2[j];
result[i + j] = temp % 10;
result[i + j + 1] += temp / 10;
if (result[i + j + 1] > 10) {
result[i + j + 1] %= 10;
result[i + j + 2]++;
}
}
StringBuffer sb=new StringBuffer();
for(int i=result.length-1;i>=0;i--)
sb.append(result[i]);
System.out.println(sb.toString());
return result;
}
}
public class BigMultiTest {
public static void main(String[] args){
Scanner reader=new Scanner(System.in);
String numStr1=reader.next();
String numStr2=reader.next();
int[] intNum1=changetoArray(numStr1);
int[] intNum2=changetoArray(numStr2);
multiply(intNum1,intNum2);
}
public static int[] changetoArray(String numStr){
int length=numStr.length();
int[] intNum=new int[length];
for(int i=0;i<length;i++)
intNum[length-i-1]=Integer.parseInt(String.valueOf((numStr.charAt(i))));
return intNum;
}
public static int[] multiply(int[] num1,int[] num2){
int length1=num1.length;
int length2=num2.length;
int[] result=new int[length1+length2];
for(int i=0;i<length1;i++)
for(int j=0;j<length2;j++){
int temp = result[i + j] + num1[i] * num2[j];
result[i + j] = temp % 10;
result[i + j + 1] += temp / 10;
if (result[i + j + 1] > 10) {
result[i + j + 1] %= 10;
result[i + j + 2]++;
}
}
StringBuffer sb=new StringBuffer();
for(int i=result.length-1;i>=0;i--)
sb.append(result[i]);
System.out.println(sb.toString());
return result;
}
}
相关文章推荐
- 链家笔试题--java实现两个大整数相乘的算法
- 两个大数相乘-Java
- 拼多多内推笔试二:数字字符串两个字符串相乘/大数相乘
- Java实现两个大数相乘
- 两个大数相乘JAVA版
- Java处理两个大数相乘
- JAVA两个大数相乘
- 两个大数相乘JAVA版
- 大数相乘问题--算法思想及Java实现解析(附详细注释)
- 浅谈一下大数相乘有关思路(图解)与用java代码具体解决方案
- 大数算法 -- 正整数相乘(Java 实现)
- 大数相加,相减,相乘算法(JAVA代码)
- 两个大数相乘(纯C实现)
- 两个大数相乘的C++实现
- java 欧拉计划中两个大数计算的题
- 两个大数相乘(字符串形式)
- Java中两个大数之间的相关运算及BigInteger代码示例
- 两个大数相乘
- 新浪笔试:大数相乘.
- 超级计算器——两个大数相乘