Thinking in Java之吸血鬼数字
今天学习了Java的流程控制的内容,基本与C语言一样,只不过是Java多了foreach语句的一种用法,相对于C语言来说方便了很多。看了最后一道习题,是关于吸血鬼数字的,比较感兴趣于是就写了代码。但是我这个属于暴力求解,复杂度很高,不知道有没有更简单一点的方法,有待以后改进。
吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排列。以两个0结尾的数字是不允许的,例如,下列数字都是吸血鬼数字:
1260 = 21 * 60;1827 = 21 * 87;2178 = 27 * 81。
示例代码:
public class VampireNum
{public static void main(String[] args){int a,b,c,d;int sum = 0;for(int i = 1001;i < 10000;i++){if(i % 100 == 0)continue;sum = i;a = sum / 1000;sum %= 1000;b = sum / 100;sum %= 100;c = sum / 10;sum %= 10;d = sum;if((a * 10 + b) * (c * 10 + d) == i){System.out.println("i = " + i + ":" + (a*10 + b) +"*" + (c * 10 + d));continue;}if(i == (a * 10 + b) * (d * 10 + c)){System.out.println("i = " + i + ":" + (a*10 + b) +"*" + (d * 10 + c));continue;}if(i ==(b * 10 + a) * (c * 10 + d)){System.out.println("i = " + i + ":" + (b*10 + a) +"*" + (c * 10 + d));continue;}if(i == (b * 10 + a) * (d * 10 + c)){System.out.println("i = " + i + ":" + (b*10 + a) +"*" + (d * 10 + c));continue;}if(i == (a * 10 + c) * (b * 10 + d)){System.out.println("i = " + i + ":" + (a*10 + c) +"*" + (b * 10 + d));continue;}if(i == (a * 10 + c) * (d * 10 + b)){System.out.println("i = " + i + ":" + (a*10 + c) +"*" + (d * 10 + b));continue;}if(i == (c * 10 + a) * (b * 10 + d)){System.out.println("i = " + i + ":" + (c*10 + a) +"*" + (b * 10 + d));continue;}if(i == (c * 10 + a) * (d * 10 + b)){System.out.println("i = " + i + ":" + (c*10 + a) +"*" + (d * 10 + b));continue;}if(i == (a * 10 + d) * (b * 10 + c)){System.out.println("i = " + i + ":" + (a*10 + d) +"*" + (b * 10 + c));continue;}if(i == (a * 10 + d) * (c * 10 + b)){System.out.println("i = " + i + ":" + (a*10 + d) +"*" + (c * 10 + b));continue;}if(i == (d * 10 + a) * (c * 10 + b)){System.out.println("i = " + i + ":" + (d*10 + a) +"*" + (c * 10 + b));continue;}if(i == (d * 10 + a) * (b * 10 + c)){System.out.println("i = " + i + ":" + (d*10 + a) +"*" + (b * 10 + c));continue;}}}
}
这段代码给出了求4位数的所有吸血鬼数字。采用的方法很笨,就是列举所有可能的组合,看得到的结果是否正确,正确则输出。这段代码只能用于求4位数的所有吸血鬼数字,对于求6位数、8位数以及更多的位数的吸血鬼数字不适用。目前我还没有相处更好的解决方案。先把第一版代码放上吧,后续如果想到了更好的方案再更新。
运行结果为:
今天的“Java从入门到放弃”就到这了,不知道明天会不会继续。但是学习真的很有成就感,即使学到的这些东西可能用处不是特别大,但自己开心就好!
Thinking in Java之吸血鬼数字相关推荐
- Java实现吸血鬼数字
题目描述:找出所有四位数的吸血鬼数字. 实验思路: 首先从吸血鬼数字本身考虑,则从1000遍历到9999.这需要找出每一个数字的是否存在对应的一对因子使之满足吸血鬼数字的条件,此方法工作量大且算法难以 ...
- java编程——吸血鬼数字(四位)
从<Thinking in Java>(中文第四版)中第4章的练习10看到"吸血鬼数字",特编程实现,以下为3种算法(针对四位数的)及其对比: 首先解释一下吸血鬼数字: ...
- java 吸血鬼数字_用java求吸血鬼数字 | 学步园
吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字各包含乘积的一 半位数的数字,其中从最初的数字中选取的数字可以任意排序.以2个0结尾的数字是不允许 的,例如,下列数字都是吸血鬼数字: ...
- java 吸血鬼数字_java编程思想之吸血鬼数字
我觉得×××,所以我来了. -------------------------- 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取 ...
- java 4位数,java 找出4位数的所有吸血鬼数字
java 找出4位数的所有吸血鬼数字 /** * 找出四位数所有的吸血鬼数字 * 吸血鬼数字:位数为偶数的数字可以由一对数字相乘而得,这对数字包含乘积一半的位数 * 如:1260 = 21*60 */ ...
- 吸血鬼数字—THINKING IN JAVA中一道习题
import java.util.*;public class Test01 {public static void main(String[] args) {int num1, num2, prod ...
- java吸血鬼_4位吸血鬼数字的java实现思路与实例讲解
这个问题来源于java编程思想一书,所谓"吸血鬼数字"就是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数字,其中从偶数位数字中选取的数字可以任意排列. ...
- java手机游戏吸血鬼_Java 吸血鬼数字
private static void vampireNum() { // 官方参考答案 int[] startDigit = new int[4]; int[] productDigit = new ...
- java吸血鬼数字_吸血鬼数字的简单实现
从think in java上面看到的吸血鬼数字,自己写了一个简单的实现 package com.zyl; import java.util.ArrayList; import java.util.A ...
最新文章
- const在函数声明中的应用(转)
- 使用blowery.Web.HttpCompress.dll对aspx压缩
- c语言getchar用法_C语言 — 关键字
- mfc获取别的计算机是否在线,VC获取并修改计算机屏幕分辨率(MFC)
- SSM整合项目中使用百度Ueditor遇到的问题。
- 程序员35岁破局之路
- Orchard Core 1.0.0 正式发布!
- NVIDIA发布先进的软件定义自主机器平台DRIVE AGX Orin
- 1.4万+阅读量,这篇JAMA论文,详细阐述临床试验统计方法,非常值得借鉴!
- spring hibernate druid mysql_使用Spring4的JavaConfig整合Druid Hibernate4.3
- 【揭秘】一个小团队真正能落地的微服务架构实践
- 【JavaEE】Spring 事务传播机制
- 制作一个免费的Wi-Fi二维码原来这么简单
- Tenth season fifth episode,Rachel‘s sister came again???????
- Text-to-Table: A New Way of Information Extraction
- 【STM32】按键抖动及消除
- 课程学习(Curriculum Learning, CL)
- 常用网络工具使用说明(仅列出常用的功能,扩展功能可以单独查)
- 【免疫算法,资源分配】基于免疫算法的认知无线电资源分配研究
- 艾默生质量流量计用于流量测量的作用意义