非常羞愧(事实上没什么羞愧。水平就这样)。搞了半晌才写出来了一个Java 版求四位吸血鬼数字的方法

吸血鬼数字是指位数为偶数的数字。能够由一对数字相乘而得到。而这对数字各包括乘积的一半位数的数字,当中从最初的数字中选取的数字能够随意排序。

以两个0结尾的数字是不同意的,比如,下列数字都是“吸血鬼”数字:

1260 = 21 * 60  1827 = 21 * 87  2187 = 27 * 81

int len = 4;
// 求出四位值得范围
int max = (int) (Math.pow(10, len) -1);
int min = (int) (Math.pow(10, len-1));
for (int num = min; num <= max; num++) {
// 过滤掉诸如60*50=3000这种数
if (num % 100 == 0) {
continue;
} // 主要思路,分解四位数字。拿出来排列组合。然后依据条件a*b=c来筛选,费劲心思也就做到这程度了,真™想回家种地
List<String> list = Arrays.asList(String.valueOf(num).split(""));
List<String> ss = new ArrayList<String>(); for (int i = 1; i < list.size(); i++) {
for (int j = 1; j < list.size(); j++) {
if (j == i) {
continue;
}
List<String> halfs = new ArrayList<String>();
halfs.addAll(list); halfs.remove(i);
halfs.remove(j - 1); String a = list.get(i) + list.get(j);
if (!ss.contains(a)) {
for (int k = 1; k < halfs.size(); k++) {
String b = halfs.get(k) + halfs.get(halfs.size() - k);
if (!ss.contains(b)) {
ss.add(b);
} int i1 = Integer.parseInt(a);
int i2 = Integer.parseInt(b);
if (i1 * i2 == num) {
System.out.print(a + "、" + b + "=" + num + ",");
} }
}
}
}
}

得出结论例如以下:

21、60=1260,15、93=1395。41、35=1435,51、30=1530,21、87=1827。27、81=2187,86、80=6880,86、80=6880,

还多出了一组同样的数据。也是醉了。真灰心。

当然了,悻悻然的做出了结果,也算不负于王二(我,已经无法用第一人称了)的智商。

为了保持一颗上进的心。我还是看看高手们怎么完毕的。

參见AVA实现的吸血鬼数字算法,高效率版本号(已有网友给出算法说明)。说实话,看了几遍也没有看懂,真扫兴,你要是看懂了,能够教一教王二这个榆木疙瘩。


相关文章

王二语录

the best things in life,they are free,but if you wanna cry,cry on my shoulder.──《cry on my shoulder》

本文出自:【qing_gee的博客

Java 吸血鬼数字的更多相关文章

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

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

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

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

  3. 《Thinking in Java》习题——吸血鬼数字

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

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

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

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

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

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

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

  7. 原码,反码,补码,及Java中数字表示方法

    原码:原码是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 如:如果是八位二进制1即用00000001表示,-1即用10000001表示. 反码:正数的反码就是其本身,负数的反码是在其 ...

  8. java 将数字转成成16进制

      java 将数字转成成16进制 CreationTime--2018年6月11日17点11分 Author:Marydon 1.前提 数字必须是byte类型,即[-128,127] 2.代码实现 ...

  9. 实验三 Java猜数字游戏开发

    课程:Java实验   班级:201352     姓名:程涵  学号:20135210 成绩:             指导教师:娄佳鹏   实验日期:15.06.03 实验密级:         ...

随机推荐

  1. Alpha 冲刺报告8

    组长:吴晓晖 今天完成了哪些任务: maven和idea用的不熟啊,jar包或者war包导出来一直有问题:生气了把ide扔到服务器里去运行springboot了,卡哭了,终于可以运行了,然后debug ...

  2. java集合系列之三(ArrayList)

    上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayLi ...

  3. 认识javascript中的作用域和上下文

    javascript中的作用域(scope)和上下文(context)是这门语言的独到之处,这部分归功于他们带来的灵活性.每个函数有不同的变量上下文和作用域.这些概念是javascript中一些强大的 ...

  4. Python开发_python的安装

    Python几乎可以在任何平台下运行,如我们所熟悉的:Windows/Unix/Linux/Macintosh. 在这里我们说一下,在Windows操作系统中安装python. 我的操作系统为:Win ...

  5. spring---transaction(6)---事务的配置

    1 写在前面 上一篇我们了解到spring的事务的体系.这里我们将结合上篇讲spring事务的配置 2 Spring的三种事务配置形式 2.1 使用TransactionProxyFactoryBea ...

  6. http://qurtyy.blog.163.com/blog/static/5744368120130221419244/

    我们先来看它的思路:把控制不透明度和控向上移动的动画分别存储在两个队列中,控制向上移动的队列按默认情况进行(在2000毫秒内完成),而不透明度的控制在1000毫秒内执行,但这个队列要晚于默认队列100 ...

  7. Leetcode 树 Populating Next Right Pointers in Each Node II

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Populating Next Right Pointers in Each Node II ...

  8. mysql ga rc beta alpha区别

    alpha  暗示这是一个以展示新特性为目的的版本,存在比较多的不稳定因素,还会向代码中添加新新特性 beta 以后的beta版.发布版或产品发布中,所有API.外部可视结构和SQL命令列均不再更改, ...

  9. MVC中使用AngularJS-01,基本

    Angularjs是一个前端的Javascript MVC 库和框架,使前端得到更好的设计.维护和测试.它的核心特性有:MVC.双向数据绑定.指令和语义化标签.模块化工具.依赖注入.HTML模板,以及 ...

  10. 23LINQ运算符返回其它类型实例汇总

      IEnumerable<T>返回其它集合类型 ToArray() ToList() ToDictionary() ToLookUp()     返回集合中的元素 □ ElementAt ...