问题:用Java实现一个复杂算法
吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,这对数字各包含乘积的一半位数的数字,数字选取后可任意排序。例如,下列数字都是“吸血鬼”数字:
1260=21×60
1827=21×87
2187=27×81
写出一个程序,找出4位数的所有吸血鬼数字。
public class VampireDigital{
public static void main(String arg[]){
int a,b,n,i,j,temp;
int[][] ans=new int[3][10000];
i=n=a=b=temp=0;
for(a=10;a<=99;++a)
for(b=10;b<=99;++b)
{
temp=a*b;
if(temp/1000!=0 && temp/10000==0) //相乘为四位数
{
ans[0][n]=temp;
ans[1][n]=a;
ans[2][n]=b;
int each=0;
int[] target={a/10,a%10,b/10,b%10};
while(temp!=0){
each=temp%10;
temp/=10;
for(i=0;i<4;++i)
if(target[i]==each){
target[i]=20;
break;
}
} //end while
for(each=0,i=0;i<4;++i)
if(target[i]!=20)
{
each=1;
break;
}
if(each==0)
n++;
}//end if
}//end for
System.out.println("所有的四位吸血鬼数如下:");
for(i=0;i<n;++i)
{
for(temp=0,j=0;j<i;++j)
if(ans[0][j]==ans[0][i]) //避免输出重复项
{
temp=1;
break;
}
if(temp==0)
System.out.println(ans[0][i]+ " = " + ans[1][i] + " * " + ans[2][i] );
}
}//end main
}//end class