您的位置:首页 > 编程语言 > Java开发

吸血鬼数字—THINKING IN JAVA中一道习题

2013-04-02 01:04 501 查看


importjava.util.*;

publicclassTest01{

publicstaticvoidmain(String[]args){

intnum1,num2,product,count;
intvampCount=0;
int[]startDigit=newint[4];
int[]productDigit=newint[4];
for(num1=10;num1<=99;num1++){
       //num2=num1+1控制吸血鬼数值重复出现
for(num2=num1+1;num2<=99;num2++){
product=num1*num2;
if(product<1000)
continue;
startDigit[0]=num1/10;
startDigit[1]=num1%10;
startDigit[2]=num2/10;
startDigit[3]=num2%10;
productDigit[0]=product/1000;
productDigit[1]=(product%1000)/100;
productDigit[2]=(product%100)/10;
productDigit[3]=product%10;
count=0;
for(inti=0;i<4;i++){
for(intj=0;j<4;j++){
if(startDigit[i]==productDigit[j]){
count++;
startDigit[i]=-1;
productDigit[j]=-2;
}
}
}
if(count==4){
vampCount++;
System.out.println("第"+vampCount+"个吸血鬼数字为:"+product+"="+num1+"*"+num2);
}
}
}

/*网上找到的另一种方法,很独到
String[]ar_str1,ar_str2;
intsum=0;
for(inti=10;i<100;i++){
for(intj=i+1;j<100;j++){
inti_val=i*j;
if(i_val<1000||i_val>9999)
continue;//积小于1000或大于9999排除,继续下一轮环
ar_str1=String.valueOf(i_val).split("");
ar_str2=(String.valueOf(i)+String.valueOf(j)).split("");
java.util.Arrays.sort(ar_str1);
java.util.Arrays.sort(ar_str2);
if(java.util.Arrays.equals(ar_str1,ar_str2)){
//排序后比较,为真则找到一组
sum++;
System.out.println("第"+sum+"组:"+i+"*"+j+"="
+i_val);
}
}
}
System.out.println("共找到"+sum+"组吸血鬼数");

*/

}
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: