java编程思想中求吸血鬼数字的两种写法
class M{ public static void main(String[] args) { int count = 0; String[] s_arr,n_arr; for (int i = 10; i < 100; i++) { for (int j = i; j < 100; j++) { int sum = i * j; if(sum > 1000 && sum < 10000 && (sum - i - j) % 9 == 0){ count++; s_arr = String.valueOf(sum).split(""); n_arr = (String.valueOf(i) + String.valueOf(j)).split(""); Arrays.sort(s_arr); Arrays.sort(n_arr); if(Arrays.equals(s_arr,n_arr)){ System.out.println(sum+"="+i+"*"+j); } } } } System.out.println(count); } }
运行结果:
1395=15*93
1260=21*60
1827=21*87
2187=27*81
1530=30*51
1435=35*41
6880=80*86
255
class L{
public static void main(String[] args) {
int count = 0,num = 0;
for (int i = 10; i < 100; i++) {
for (int j = i; j < 100; j++) {
int sum = i * j;
if(sum > 1000 && sum < 10000 && (sum - i - j) % 9 == 0){
count++;
int[] s_arr = new int[4];
int k = 0;
while(sum != 0){
s_arr[k++] = sum % 10;
sum /= 10;
}
int[] n_arr = new int[4];
n_arr[0] = i / 10;
n_arr[1] = i % 10;
n_arr[2] = j / 10;
n_arr[3] = j % 10;
int scount = 0;
for (int l = 0; l < 4; l++) {
for (int m = 0; m < 4; m++) {
num++;
if(s_arr[l] == n_arr[m]){
scount++;
s_arr[l] = -1;
n_arr[m] = -2;
if(scount == 4)
System.out.println(i * j + "=" + i + "*" + j);
}
}
}
}
}
}
System.out.println(count);
System.out.println(num);
}
}
运行结果:
1395=15*93
1260=21*60
1827=21*87
2187=27*81
1530=30*51
1435=35*41
6880=80*86
255
4080

浙公网安备 33010602011771号