最近在看《Java编程思想》,这本书非常棒,不愧是Java程序员的圣经。看到第四章,后面有道题目很有意思,于是就自己做了做。

aaarticlea/png;base64,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" alt="" />

1. 我的思路很简单,但是算法效率非常之低。就是把4位数拆成4个数字,比如1260--->1,2,6,0。然后4位数字组合成两个2位数,计算它们

的乘积,相等则就是吸血鬼数字。

 public class Test2 {
/*
* 将4位数拆分成4个数
* */
public int [] array(int num){
int [] a = new int [4];
int i=0;
while(num!=0){
a[i++]=num%10;
num=num/10;
}
return a;
}
/*
* 将4给数组合成两个数,相乘与4位数比较。相等就是吸血鬼数字
*
* */
public boolean equal(int num,int [] a){
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(i==j){
continue;
}else{
if(6-i-j==5){//i,j=0或1
if((a[i]*10+a[j])*(a[3]*10+a[2])==num||(a[i]+a[j]*10)*(a[3]*10+a[2])==num){
return true;
}
}
else if(6-i-j==4){//i,j=0或2
if((a[i]*10+a[j])*(a[3]*10+a[1])==num||(a[i]+a[j]*10)*(a[3]*10+a[1])==num){
return true;
}
}
else if(6-i-j==3&&(i==3||j==3)){ //i,j或0,3
if((a[i]*10+a[j])*(a[2]*10+a[1])==num||(a[i]+a[j]*10)*(a[2]*10+a[1])==num){
return true;
}
}
else if(6-i-j==3&&(i==1||j==1)){//i,j=1或2
if((a[i]*10+a[j])*(a[3]*10+a[0])==num||(a[i]+a[j]*10)*(a[3]*10+a[0])==num){
return true;
}
}
else if(6-i-j==2){//i,j=1或3
if((a[i]*10+a[j])*(a[2]*10+a[0])==num||(a[i]+a[j]*10)*(a[2]*10+a[0])==num){
return true;
}
}
else if(6-i-j==1){//i,j=2或3
if((a[i]*10+a[j])*(a[1]*10+a[0])==num||(a[i]+a[j]*10)*(a[1]*10+a[0])==num){
return true;
}
}
}
}
}
return false;
}
public static void main(String[] args) {
Test2 t2 = new Test2();
for(int i =1001;(i<=9999);i++){
if(t2.equal(i, t2.array(i))){
System.out.println(i);
}
}
} }

运行结果:

aaarticlea/png;base64,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" alt="" />

结果是对的,但是算法效率太低。将近要循环9000*4*4=14400次。

在网上找了找,有很多高效的算法。贴出来研究一下别人的思路。

2.

 public class XiXueGui {
/**
* 吸血鬼数字算法
* 如:12*60=1260
* YangL.
*/
public static void main(String[] args) {
String[] ar_str1 = null, ar_str2;
int sum = 0;
int count=0;
for (int i = 10; i < 100; i++) {
for (int j = i + 1; j < 100; j++) {
int i_val = i * j;
if (i_val < 1000 || i_val > 9999)
continue; // 积小于1000或大于9999排除,继续下一轮环
count++;
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 + "组吸血鬼数"+"\ncount"+count); }
}

这个算法非常棒,基本思路是:4位数字的吸血鬼数字只能拆分成两个2位数。于是就计算两个2位数相乘(11,12行)。用String.valueOf(j)).split("");的方法来把数字转换为字符串,排序,比较4位数的字符串和两个2位数的字符串,若相等,就是吸血鬼数字。把数字的比较,转换为对字符串的比较,非常棒。

这个算法循环了3721次。

运行结果:

aaarticlea/png;base64,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" alt="" />

3.《Thinking in Java》官方答案

 //: control/E10_Vampire.java
/****************** Exercise 10 *********************
* A vampire number has an even number of digits and
* is formed by multiplying a pair of numbers containing
* half the number of digits of the result. The digits
* are taken from the original number in any order.
* Pairs of trailing zeroes are not allowed. Examples
* include:
* 1260 = 21 * 60
* 1827 = 21 * 87
* 2187 = 27 * 81
* Write a program that finds all the 4-digit vampire
* numbers. (Suggested by Dan Forhan.)
****************************************************/
public class E10_Vampire {
public static void main(String[] args) {
int[] startDigit = new int[4];
int[] productDigit = new int[4];
for(int num1 = 10; num1 <= 99; num1++)
for(int num2 = num1; num2 <= 99; num2++) {
// Pete Hartley's theoretical result:
// If x·y is a vampire number then
// x·y == x+y (mod 9)
if((num1 * num2) % 9 != (num1 + num2) % 9)
continue;
int product = num1 * num2;
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 % 1000 % 100 / 10;
productDigit[3] = product % 1000 % 100 % 10;
int count = 0;
for(int x = 0; x < 4; x++)
for(int y = 0; y < 4; y++) {
if(productDigit[x] == startDigit[y]) {
count++;
productDigit[x] = -1;
startDigit[y] = -2;
if(count == 4)
System.out.println(num1 + " * " + num2
+ " : " + product);
}
}
}
}
}

运行结果:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkAAAAB6CAIAAADYhnuDAAAORklEQVR4nO3dy7niMBKAUdLiBuR0IISJwqsJYTJwMMwCbJekKrlkyQJ9/Z9VNxdbD2SVH6C6zf/93wsAgNHcCGAAgBERwAAAQ/pSAFse99v9sVxZxDxdXcL3dejG75un2zS/6hr7T3TUBfZ+Wz+FX2N9svvhvzzuv1l1lVHbogH8L412AthmedxvghhF8xT+f33pdrsZZcxTvMElLa7Y6acBWyWvivfL4x53RaGvBbBPFynb2UNl3zTaLNjkV+fTsF33x3IygBmDqcEYS3ZRE8CU41ruNvNhHRz+9h6iDfVxUhjA3H3y2/aWu7ruwxnAfuEsprAOpwJYsv/lcb/d7tMU/EkMkDRSbaUHr/9CBwbiCemiALY87vd7XdNPn/u36HO9W8I9a/Pg8rgnk8r6wu/OL5keK/sUkuav+6hut77n1EEAU49rufH6uvJhOQ7/1zxtG4UTc7ShNk6KB623T37Z3gZv130+RAKYY//hn4L/WVuFQ/sX+i/UJ4C9h2Xd7aefD2BqUfGkEvz/V29vNwtg+pzapNnO2dp1CzFz8G5lqNc3h4e/VmN1Q2WclA/a8SOYMbyyXfd6vXJXYPu9n+3a7SaDYHg5997pPH1emqfb/TF/rgSned8iGVTzdLs/HlN8cRhfRXrqEL5N/sF1zuse6GFnW0eljGBJ/0cXyEfdJbtXbhieoYj+t/onqJ4ZwOIaBt23/+fgNstrH39BHxltMV+XtxDlHc+wdfkBY2wb30JNx6EzgMn5SPROeNWe7jX3qYWdKu6fPKKpWWx+Zmhl2xUcp3bnKyVrR1ObMZY5m1QPf/GO994c55VrBbSJw3f4KxvoG6bjJH+kqwPV7pOz/SzaJWYypbXxYJDPDMIt4zET9nd2lrL7PA1ga1PM84J4GG79cotG0nabNx3Vwech/7p2wiROgJRDQq1DcNEzT0oTknlBa7jyrtxJlzmC4+iyvqo07ai7ou7dNrTeoPdPwA5gWg2V81m1IUkZ+7wcTV1JW8zX0wCWfLaHA8baNvoIktsVFQEs6uJFu4WoHDVW3YIJKQjaYmCeGVpxK4L5Xwlg2tBS95aeVLcaY3LP4SerdeX6jnTUHJ2zqtOF9/BP3mBuGI+T/JFuD1SlT873syzwfr8bj+z0eebzqn34O8aKr+viACajZ0DsITzLWY+OTBHav5PGrqXY12CHdYh61xpZnjbm/+Q9BTMP79zpjv5v9TTNipHWZxTIXYFlapie6mkBP9MSsy3m60kAM3o8N2DMbdU/iHFYEMDyfSxjg3EwW3UzB7YyYsuHVrZdaQDTh9b71WiHyazUbIyJPVufbNRLk3qOZR3y0WhNJm13AIuDqr6hHnyC/x5PmFqfbP870c/76Ls/lvdzqWSQm/NMOB4OpyPt6PF1XeYKLPhkw+BxfEjXBbD4LFMLYOp0kQtgriswbwAL42x+j8nlW9q0CwKY975G0gy9hp9d7iPNeFtYQkQ9+W8RwA4HTC6ApSeX5QHM6PBwIjwKGFbdnAHs5NDKtksNYObQeh9iwTWkfG/DMab0QbaXbve79hDBOHjDXcUtdh/+cxQ07Q2PT+8cZ/zqlVVFPy+f59db6JqTIWwOhiSAHUxHyum0s+s8z8CibaLQqM5KdQEs+jyViU+tw2zcadFOo4wGuwLYcTiXb9yuv+P3i6a5AljYtmjOT/s/7Z9AOGREB+k1fH8406TN7MHb9CrI/xttMV9PAliw6/kRXnzrAybcVjvoKwKY3GU00oJJ4nACzdRNHdhm/CsZWpn6aAFMHVrL42Gd/IfzTrMxtu1ZHxVaLynDND0D2GYn2VHb5snZpHn4qzOOvWEUTHJHuhnAlD6p6+dFfIP4/W9Rx+20T5lntgCpDWB1OooaVdB13t+BvU+u5HQaXs40DWCiAPlN16M6yJN++azbSexRLUaWtb9snX6Jfcan1WnTfFdgk/G9B6X/jf4RggkpeJPe+ckEYL1t33/0mpwJlLaYr6cBLO3/owETn+/Gn+eJABaPlP0v6szkCWBW3YL2JV/i0N5UMLSy9VECmD605vRzE82/YIwt4m6NPK3N99K8PgbUjmvx2ck/i8EUTPP2sZXefTjcMAw+uSPdDmBKn9T1cxTN1LO0ZDCIs7D47DTTZfvwKui65eH+Gj2+K53pasUX7f1YbWnfxgYcN2PzLvnk6qrU03Uf6mfPPzlqTmjSjoH7RD3BcyCANRGfNrQePpdMg1dU1GGYAPbpotpoUX+qsDzuwaXOOPHrdeWZ0jzdpofn4cDlmhz+TTrqd/qk2LnjnwA2hJ+b3CsME8B+iLgDM+DUdI3vnYL9rn+vTwhgAIAh7QHsPwAAjIMrMADAkAhgAIAhEcAAAEMigAEAhnRRAFue05Nv+wIArqMGsOX5F/2a4POK43d6y/Pv9vecn9Nzfv7d/rJhTFt/RvwmML9xkbRFRkFKlfxtBwD0kwawebr9PZfl+RcHMP/U/Z7yD+KP3OW7zPTvbUKY2iKtIL1KZW0HAPRh3UI8HcDcV2DByilKBHMVOU/ui6JsAEsWLBVVIoABwC8qCGAld/Ycz8DEcuXL80/sdr2L5ymnKoAlBelVKm07AKAHZwAL/9DogmSLDH/Pp3IPMU3IUV2avrs4bplVath2AECl4gDW8NnUUWnak7HWZZgFqW+/ou0AgFOKA9g8Nb+RZoQFT/xq8QzMegCXFn5B2wEAJ6nfQkxz24jnQM1m8H2fYSrnkoJcAUxtkVqQWqUr2g4AqMVKHACAIRHAAABDIoABAIZEAAMADIkABgAYEgEMADAk0qkAAIakBbD9h0/yd09KRhJNSTqVl/g51vZOvfRKWuWtgjpVCQBQJQ1gy/NPLAz4mbEPMpJEXOlU9OUuonUJmyw8aCWISZvZrUoAgFrZW4jxcrqe+dt/BaYtFSVee0fBg+JaLSW151OprhIAoItcAEum/JKsYIfPwJbn399z3ld/D1JvvVcd1NaoD7XNB9akSgCALuwApmQzaXoHLUgC9rnMeRewldx0OXqj8rKZvasEADhPD2BG4qvWAUyEgk8y5HkSD8/aPnFS9hY3s3eVAADnKQHMTtt4WUTZvzshrnA8CS0rbiFqzWxRJQBAF0kAE8lD9OQjcbaRCqKsfYdF31k/nU5Fb2aLKgEAumAlDgDAkAhgAIAhEcAAAEMigAEAhkQAAwAMiQAGABgS6VQAAEP6ajoV+QOtbTXdK35wplY+Lf2ltf2qKgEAqnwxncpnqab13+nbW607qFZeLV3PsXJBlQAAtb6YTiWJj+mfD6Pl+aWkDkpXV41iJUQA+B3fS6fyer22+3P6KvGtlpJaq5RU3i5dbSqXXwDwQ76XTkWspvtOtbVEf2t8raNcgVmlc/kFAL/vq+lUgqdQ0eK5za91wsrbpettv6RKAIDzvpdORYaEMDwUJC05fQvRKN1qO3lUAODXfDOdiizq5OXX6XQqaum5HCtcfgHAb2ElDgDAkAhgAIAhEcAAAEMigAEAhkQAAwAMiQAGABgS6VQAAEPypVMpSClSl05FFN/yd8P+BDH9MrwAAKo406lIx2vaVqRTKcvb4uNPENMtwwsAoFZROpXX63g5qSbpVNwBrGApqe39mQQxLTK8AAC6KEqn8nJfglSmU7kqgHkSxNRmeAEAdFGUTqX9ar5GQpNrLnWOE8R0zvACADivJJ1K2zVtM+lULggWrgQxvTO8AADOK0in0jiliJ1OpfktRG+CmCYZXgAAXTjTqVxyCaKlUynM2+IJYCUJYhpkeAEAdMFKHACAIRHAAABDIoABAIZEAAMADIkABgAYEgEMADAk0qkAAIakBDDxCynx4yc9I0mqbDHfTulUlH3qpde1HQDQz9Fivvva7PIXza6fDh9N9uqOrkinou7zoIjTbQcA9OFbjV6sw/4OTi0SWmaiwRWr0ZcHsOK2AwD6UQPYeiNNTtxijfbncVoRzzMweRMv2l+nAKaVXt92AEAProSW70l8u5XWPC9WstjuFbfqzH3qS/32ajsA4Jz8txDX6XqetGuSdk6vRl9Yhr5Pfa3eXm0HAJxydAW2f5FhncMvyCxyPqHl+VuImdLXV7u0HQBwThrA9G+SX/BVcvEUKky8lWY5MbkCmLrPo9KvbTsAoBYrcQAAhkQAAwAMiQAGABgSAQwAMCQCGABgSAQwAMCQSKcCABiSM52Klfok5V/MV2ygJTq5OJ2KXnpd2wEA/TjTqZQtoeRLp/J6vd7LXEzTvvNu6VTU0nen2w4A6MOXTqVgEi+6ArNCS5+lpHLB8lTbAQD9uNKpZFOfqFzPwNZFBr8TwIzS69sOAOjBlU5F0pOPnDBP9iXO9avR50pf33Bd2wEA1XzpVCQ9+Uip8JsR2kXPlQEsX/rbdW0HADTgTKcSvNZ6Dv/WM7Ds653aDgA4yZlORU0+0ooMId3SqRyV3qntAICTWIkDADAkAhgAYEgEMADAkAhgAIAhEcAAAEMigAEAhkQ6FQDAkLQAJn83tf1mav81VP7HUCWL+aoFydcb/u4q3adaelXbAQD9qD9kltP5e8oWKwM6VsnwpVNRC7pktSZtn1Yza9sOAOgjDWBitpdz+BoAkvyTL21zzxWYVpC6glOGdyWOdJ9q6ZVtBwD0oz8D+9xIk2vfTvNrXQzweRxkvM/AooJey/Pv7zmvd+yOQ5kngNn7jEvXXixvOwCgB/0KTE7ZW8qs7VZa4VWSRSno/dq685blJPvUSu/XdgBArSSABY951nl7nsS1S6MHQWpBy/NPxAf5SKqqoHSfVul92g4AqKYGMDldJw+CtEyPZ+gFiQjh+TqH6xmYtk+19G5tBwBUU56ByWyP+2x9wVfJjwpyxApnPjBtn2rp3doOAKjEShwAgCH9H9ZZ3K0gkFIKAAAAAElFTkSuQmCC" alt="" />

《Thinking in Java》习题——吸血鬼数字的更多相关文章

  1. java实现吸血鬼数字

    public class Vempire { public static void main(String[] arg) { String[] ar_str1, ar_str2; ; int from ...

  2. Java 找出四位数的全部吸血鬼数字 基础代码实例

    /**  * 找出四位数的全部吸血鬼数字  * 吸血鬼数字是指位数为偶数的数字,能够由一对数字相乘而得到,而这对数字各包括乘积的一半位数的数字,当中从最初的数字中选取的数字能够随意排序.  * 以两个 ...

  3. Java 找出四位数的所有吸血鬼数字 基础代码实例

    /**  * 找出四位数的所有吸血鬼数字  * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序.  * 以两个 ...

  4. Java 吸血鬼数字

    非常羞愧(事实上没什么羞愧.水平就这样).搞了半晌才写出来了一个Java 版求四位吸血鬼数字的方法 吸血鬼数字是指位数为偶数的数字.能够由一对数字相乘而得到.而这对数字各包括乘积的一半位数的数字,当中 ...

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

    书本p75中一道读后练习思考题,题目如下: 吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序.一两个0结尾的数字是 ...

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

    // 吸血鬼数字 java编程思想 第四章 75页 练习10 for (var i = 10; i <= 99; i++) { for (var j = i + 1; j < 99; j+ ...

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

    package test4; import java.util.Arrays; /** * 从TIJ中第4章的练习10看到“吸血鬼数字”,以下几种方法实现以及执行时间对比 * 找出四位数的所有吸血鬼数 ...

  8. Java求吸血鬼数算法(通用)

    /*吸血鬼数字是指位数为偶数的数字,可以由一 * 对数字相乘而得到,而这对数字各包含乘积的一半位数的数字, * 其中从最初的数字中选取的数字可以任意排序. * 以两个0结尾的数字是不允许的. * * ...

  9. Oracle java.sql.SQLException: 数字溢出

    六月 30, 2016 5:47:47 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinit ...

随机推荐

  1. linux 使用 lockf命令防止脚本重复运行

    之前服务器的脚本,迁移至一台新的机器上,运行脚本,提示报错信息: -bash: /usr/bin/lockf: 没有那个文件或目录  或 -bash: /usr/bin/lockf:  no such ...

  2. swift,NSUserDefaults的swift化封装

    NSUserDefaultshtml, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror- ...

  3. Java编程的逻辑 (70) - 原子变量和CAS

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  4. jdbc读取百万条数据出现内存溢出的解决办法

    本人在做项目实施时,我们使用的是mysql数据库,在不到一个月的时间已经有了2千万条数据,查询的时候非常慢,就写了一个数据迁移的小项目,将这两千万条数据存放到MongoDB中看效率怎么样,再读取数据时 ...

  5. android 代码混淆模板

    #指定代码的压缩级别 -optimizationpasses #包明不混合大小写 -dontusemixedcaseclassnames #不去忽略非公共的库类 -dontskipnonpublicl ...

  6. Encapsulating Data 数据封装

    Objective-C中类的封装本质上其他OO语言没什么区别,不过在概念和书写表达上差异还是比较大的, Property属性 这里的Property并不是简单的类成员变量,而是OC中特有的可以为编译器 ...

  7. Axiom3D:Ogre中Mesh文件格式分析(一)

    在Axiom3D,或者说是Ogre的mesh的文件格式我们可能通过代码反推出相关格式,相关过程本来我是直接写的,后面发现相关流程写完后,我自己都看晕了,然后我就把一些过程用Execl整理出来,发现过程 ...

  8. 大型网站的SEO引爆点

    网站越大,SEO服务做起来就轻松,因为大型网站都有很好的执行团队,你只需要找准他们网站的SEO爆破点,就能够迅速获得非常理想的SEO效果.本文将结合我最近两年的几个经典案例:腾讯拍拍.金山爱词霸.中青 ...

  9. 使用Maven模板创建项目

    在本教程中,我们将向你展示如何使用mvn archetype:generate从现有的Maven模板列表中生成项目.在Maven 3.3.3,有超过1000+个模板,Maven 团队已经过滤掉一些无用 ...

  10. e804. 显示JProgressBar的完成百分率

    The progress bar offers the ability to display the actual value of the bar as a percentage. This exa ...