吸血鬼数字


package Pro0519;

import java.util.Arrays;

public class pro0519 {
public static void main(String[] args) {
String[] ar_str1, ar_str2;
int sum = 0;
int from;
int to;
int i_val;
int count = 0;
// 双重循环穷举
for (int i = 10; i < 100; i++) {
// j=i+1避免重复
from = Math.max(1000 / i, i + 1);
to = Math.min(10000 / i, 100);
for (int j = from; j < to; j++) {
i_val = i * j;
// 下面的这个代码,我个人并不知道为什么,汗颜
if (i_val % 100 == 0 || (i_val - i - j) % 9 != 0) {
continue;
}
count++;
ar_str1 = String.valueOf(i_val).split("");
ar_str2 = (String.valueOf(i) + String.valueOf(j)).split("");
Arrays.sort(ar_str1);
Arrays.sort(ar_str2);
if (Arrays.equals(ar_str1, ar_str2)) {// 排序后比较,为真则找到一组
sum++;
System.out.println("第" + sum + "组: " + i + "*" + j + "=" + i_val);
}
}
}
System.out.println("共找到" + sum + "组吸血鬼数");
System.out.println(count);
}
}

吸血鬼数字

时间: 2025-01-17 01:55:42

吸血鬼数字的相关文章

吸血鬼数字算法参考 -- javascript版本

// 吸血鬼数字 java编程思想 第四章 75页 练习10 for (var i = 10; i <= 99; i++) { for (var j = i + 1; j < 99; j++) { if (i * j < 1000) continue; var result = (i * j + ''); var regx = new RegExp((i + '') [0] + '|' + (i + '') [1] + '|' + (j + '') [0] + '|' + (j + ''

Thinking In Java 里面吸血鬼数字题

首先解释一下吸血鬼数字:吸血鬼数字是指位数为偶数的数字,可由一对数字相乘而得到,这对数字各包含乘积的一半位数的数字,以两个0结尾的数字是不允许的. 四位数吸血鬼数字示例:1260=21*60,1827=21*87,2187=27*81-- 先列出结果:一共7个:1260=21*60,1395=15*93,1435=41*35,1530=51*30,1827=87*21,2187=27*81,6880=86*80 方法一: 本方法是<Thinking in Java>的官方答案,由于所处章节很靠

第四章习题:斐波那.契数列&amp;&amp;吸血鬼数字

package com.twoslow.cha4; /** * 斐波那契数列:从3个数字起,每一个数都是前2个数之和:1 1 2 3 5 8 13... * @author sai * */ public class Fibonacci { public static void main(String[] args) { for(int i = 0 ; i < 10 ;i++) { System.out.print(fib(i) + "."); } } public static

【Java】 Thinking in Java 4.8 练习10 吸血鬼数字

题目: 吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序.  以两个0结尾的数字是不允许的.写一个程序,找出4位数中所有吸血鬼数字. 方法一: 1 public static void main(String[] args) { 2 outer: for (int i = 10; i <= 99; i++) { 3 for (int j = i + 1; j <= 99; j++) { 4 int sum =

JAVA_吸血鬼数字 多种方法实现

package test4; import java.util.Arrays; /** * 从TIJ中第4章的练习10看到"吸血鬼数字",以下几种方法实现以及执行时间对比 * 找出四位数的所有吸血鬼数字 * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字, * 其中从最初的数字中选取的数字可以任意排序. * 以两个0结尾的数字是不允许的. * 例如下列数字都是吸血鬼数字 * 1260=21*60 * 1827=21*87 * 2187=2

《java编程思想》读后笔记:二,吸血鬼数字

书本p75中一道读后练习思考题,题目如下: 吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序.一两个0结尾的数字是不允许的,例如,下列数字都是"吸血鬼数字": 1260=21*60,1827=21*87,2187=27*81 写一个程序,找出4位数的所有吸血鬼数字. 个人代码: public static void main(String[] args) { Map<String,String&

java吸血鬼数字

很惭愧(其实没什么惭愧,水平就这样),搞了半晌才写出来了一个求四位吸血鬼数字的方法 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序. 以两个0结尾的数字是不允许的,例如,下列数字都是"吸血鬼"数字: 1260 = 21 * 60 1827 = 21 * 87 2187 = 27 * 81 int len = 4; // 求出四位值得范围 int max = (int) (Math.pow(10,

吸血鬼数字算法

吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字各包含乘积一半位数的数字,其中从最初数字中选取的数字可以任意排序.以两个0结尾的数字是不允许的.下面是一些吸血鬼数字: 15*93: 139521*60: 126021*87: 1827 写一个程序找出4位数中的所有吸血鬼数字: 下列解法为Java编程思想提供的参考解法 1 int[] startDigit = new int[4]; //start digit 2 int[] productDigit = new int[4];

【Java】求所有四位吸血鬼数字

1 package com.xt.homework.tools; 2 /** 3 * 4 * 7. 题目 5 * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到, 6 * 而这对数字的位数是原数字的一半位数,并且由组成原数字的各个位数组成, 7 * 以两个0结尾的数字不是吸血鬼数字. 8 * 例如:1260 = 21 * 60 1827 = 21 * 87 2187= 27 * 81 9 * 求所有四位吸血鬼数字 10 * 11 * @author 天耀二期 12 * 杨勃隆 13 */