JAVA 吸血鬼数字学习
来源:互联网 发布:java list 相同的元素 编辑:程序博客网 时间:2024/05/29 21:18
什么是吸血鬼数字:吸血鬼数字是指位数为偶数的数字。可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,选取的数字可以任意排序。以两个0结尾的数字是不允许的。 举例说明如下:
1260 = 21 * 60
1827 = 21 * 87
2187 = 27 * 81
我们根据通过找四位数的吸血鬼数字来分析。
首先,一个四位数的吸血鬼数字必须由两个10~100之间的数相乘得到。如果两个数相乘得到的数为val = 1000a + 100b + 10c + d,假设其中一个数为 i = 10a + b, 另一个数为 j = 10d + c,则所要满足的吸血鬼数字的条件之一是(val-i-j)%9 == 0,这一点不管是a,b,c,d如何匹配成i和j都满足,还有一点可以排除是非吸血鬼数字的就是val%100 != 0,因为吸血鬼数字以两个0结尾是不允许的。这只是排除的第一步,有利于减少算法的复杂性。
第二步就是通过split函数将刚才的数字经行拆分,并通过sort函数来排序,如果val拆分为四个数字后和(i+j)(在此为字符串)拆分后排序结果相同,则证明该数字val是吸血鬼数字。简单的描述如下:String [] str1 = String.valueOf(val).split(“”);
String [] str2 = (String.valueOf(i)+String.valueOf(j)).split(“”);
Arrays.sort(str1);
Array.ssort(str2);
If(Arrays.equals(str1,str2))
......
在此需要特别说明的是split函数。这里只做简要说明,详细可参考http://hi.baidu.com/zh821221/item/fec5265d342f679708be17bc或在java api文档中查看。使用String.split(“”)函数可将数字划分,诸如i = 10a +b即ab可以划分为数字a和数字b。
好了,下面写代码,由于是初学者,代码很渣,如有问题,恳请指教。
import java.util.*;public class Vampire{public static void main(String[] args){String [] str1, str2;int count = 1;for(int i = 10; i < 100; i++)for ( int j = i+1; j < 100; j++){int val = i * j;if(val%100 == 0 || ((val-i-j)%9 != 0)){continue;}str1 = String.valueOf(val).split("");str2 = (String.valueOf(i)+String.valueOf(j)).split("");Arrays.sort(str1);Arrays.sort(str2);if(Arrays.equals(str1,str2)){System.out.println("第"+count+"组 :"+val+" = "+ i+"*"+j);count += 1;}}}}
运行结果为:
第1组 :1395 = 15*93
第2组 :1260 = 21*60
第3组 :1827 = 21*87
第4组 :2187 = 27*81
第5组 :1530 = 30*51
第6组 :1435 = 35*41
第7组 :6880 = 80*86
- JAVA 吸血鬼数字学习
- 吸血鬼数字(java)
- Java - 吸血鬼数字
- java 吸血鬼数字
- Java 吸血鬼数字
- 吸血鬼数字(JAVA)
- 吸血鬼数字java算法
- 【java】吸血鬼数字
- java编程思想学习笔记(4)--吸血鬼数字
- java求吸血鬼数字算法 。。。
- 用java求吸血鬼数字
- java输出吸血鬼数字小结
- 吸血鬼数字算法—Java
- Thinking in Java--吸血鬼数字
- JAVA中关于吸血鬼数字
- [Thinking in Java]“吸血鬼”数字
- 吸血鬼数字--Java实现探究
- Java编程思想:吸血鬼数字
- double free or corruption的原因(2)
- 设计模式之单例模式(C++)
- 《Head First 设计模式》学习笔记——复合模式
- dom4j操作XML
- sublime text 2 html 格式化
- JAVA 吸血鬼数字学习
- struts
- 多线程
- Leetcode Python Palindrome Number
- Python线性代数(1)——矩阵操作
- HBase in Action前三章笔记
- Swift学习之六:元组(Tuples)
- Lzw解压缩算法
- 第十五周工作总结