用第二个数的每位来乘以第一个数,并将结果保存在一个二维数组中。
在将二维数组中的每一列求和
在从右往左,求进位,以及当前的位数,保留在一个字符串中。
public class BigData {
public static Stack<Integer>stk=new Stack<Integer>();
public static int[] returnArray(String Big){
int Biglength = Big.length();
int [] Array = new int[Biglength];
for(int i = 0 ;i <=Biglength - 1;i++){
Array[i] = Integer.parseInt(Big.substring(i,i+1));
}
return Array;
}
public static String chengfa(String first,String second)
{
int longfirst = first.length();
int longsecond = second.length();
int longfs = longfirst+longsecond;
int [] Intfirst = returnArray(first);
int [] Intsecond = returnArray(second);
int [][] result = new int[longsecond][longfs]; //用来存两个数相乘的结果。
int [] addresult = new int[longfs]; //用来存result数组中同列不同行的数据相加的值。
String endresult="";
int add = 0;
//初始化result数组的值为零
for(int i=0; i<=longsecond-1;i++){
for(int j=0;j<=longfs-1;j++){
result[i][j]=0;
}
}//
//将first和second 两数相乘的值存放到数组result中。
for(int i=longsecond-1;i>=0;i--){
for(int j=longfirst-1;j>=0;j--){
result[longsecond-i-1][j+i+1]=Intfirst[j]*Intsecond[i];
// System.out.println(longsecond-i-1);
// System.out.println(j+i+1);
// System.out.println(result[longsecond-i-1][j+i+1]);
//
}
}//
// for(int i=0;i<longsecond;i++){
// for(int j=0;j<longfs;j++){
// System.out.print(result[i][j]+" ");
// }
// System.out.println();
// }
//将result数组中同列不同行的各个数相加。
for(int i=longfs-1;i>=0;i--){
for(int j=0;j<=longsecond-1;j++ ){
addresult[i] += result[j][i];
}
// System.out.println( "2shi"+addresult[i]);
if(i==longfs-1)addresult[i]=addresult[i]+2;
}//
//将addresult数组中个元素进行相加,进位,得出为字符串的结果。
for(int i=longfs-1;i>=0;i--){
int a = (addresult[i]+add)%10; //得出各个余数。
int b = (addresult[i]+add)/10; //得出各个商的值。
//判断b的值,并重新给add赋值。
stk.push(a);
if(b>0){
add=b;
}//
}
// endresult=vert(endresult);
//endresult=leftTrim(endresult);
while(!stk.isEmpty()){
endresult+=stk.pop();
}
endresult=leftTrim(endresult);
return endresult;
}
//去掉左边的0
public static String leftTrim(String str) {
if (str == null || str.equals("")) {
return str;
} else {
return str.replaceAll("^[0]+", "");
}
}
public static void main(String[] args) {
int n=100;
String first="2";
String second="2";
while(n>0){
first=chengfa(first,second);
n--;
}
System.out.println(first);
}
}