public class Text2{
//1234567890
public static void main(String[] args){
//a,b两个任意十位数
int[] a=new int[]{1,2,3,4,5,6,7,8,9,0};
int[] b=new int[]{1,2,3,4,5,6,7,8,9,0};
int[] sum=new int[21]; //结果
int[] sumTemp=new int[21]; //临时结果
//将b数据放入到临时结果中
swap(sumTemp,b);
for (int i = a.length-1; i>=0; i--)
{
//取出一个数与sumTemp中的每一个相乘
for (int j = 0; j<sumTemp.length; j++)
{
int swap=a[i]*sumTemp[j];
sumTemp[j]=swap;
whileAdd(sumTemp,j);
}
//将相乘的结果放入结果sum中
add(sum,sumTemp);
//重新将b数据放入到临时结果中
swap(sumTemp,b);
//移位,也就是乘i这个数所在的位数
move(sumTemp,a.length-1-i);
//再把这个sumTemp放入到结果中
add(sum,sumTemp);
}
//输出结果
show(sum);
}
//交换
public static void swap(int[] a,int[] b)
{
for (int i = 0; i<a.length; i++)
{
a[i]=0;
}
for (int i = 0; i<b.length; i++)
{
a[a.length-1-i]=b[b.length-1-i];
}
}
//递归相加
public static void whileAdd(int[] n,int index)
{
if(n[index]>9)
{
n[index-1]=n[index-1]+(n[index]/10);
n[index]=n[index]%10;
whileAdd(n,index-1);
}
}
//相加
public static void add(int[] sum,int[] a)
{
for (int i = 0; i<a.length; i++)
{
int swap=a[a.length-1-i] + sum[sum.length-1-i];
sum[sum.length-1-i]=swap;
whileAdd(sum,sum.length-1-i);
}
}
//移位
public static void move(int[] n,int index)
{
int len=0; //找到最高位
for (int i = 0; i<n.length; i++)
{
if(n[i]!=0)
{
len=i;
break;
}
}
//从最高位开始移
for (int i = len; i<n.length; i++)
{
n[i-index]=n[i];
n[i]=0;
}
}
//显示结果
public static void show(int[] n)
{
for (int i = 0; i<n.length; i++)
{
System.out.print(n[i]);
}
System.out.println();
}
}