今天在看编程思想的时候,看到一道很有意思的题,然后自己看了看,又学着网上的方法
把代码贴出来给大家看看
题目大意是:
吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。
以两个0结尾的数字是不允许的,例如,下列数字都是“吸血鬼”数字: 1260 = 21 * 60 1827 = 21 * 87 2187
= 27 * 81
import java.util.Arrays;
public class test2020926 {
public static void main(String[] args) {
//先定义两个Strng类型
String[] s1,s2;
int sum=0;//用来计算组数
//直接暴力枚举,调用两次循环
for(int i=10;i<100;i++){
for(int j=i+1;j<100;j++){
//这里加一主要还是因为i和j比不可能重复,减少枚举次数
int result=i*j;//记录暂时结果,再进行判断
if(result<1000||result>9999)
continue;
//也就是不在范围里的直接排除
//直到找到一个,一字符串的方式对他进行拆分,String.valueofhe split ,也就是转化为字符类型,然后分隔开,依次存入到数组中
s1=String.valueOf(result).split("");
s2=(String.valueOf(i)+String.valueOf(j)).split("");
//这里就比较绝了,将这两组数组先进行排序,然后再判断是否相投
java.util.Arrays.sort(s1);
java.util.Arrays.sort(s2);
if(java.util.Arrays.equals(s1,s2)){
//如果两个相同的话
sum++;//总数加一
//再统计一下
System.out.println("第"+sum+"组"+"i是"+i+"j是"+j+"结果是"+result);
}
}
}
//这里再说一下
System.out.println("一共找到"+sum+"组");
}
}