吸血鬼数字测试

几天偶然翻看了下thinking in java。看到吸血鬼数字的题目。
21*60=1260
21*87=1827
找寻4位数的全部吸血鬼数字。
粗想一样,这个题目并不复杂,但是如果要做得好的话,并不是那么简单的。
就在网上找看有没有现成的源代码。
最好是能最简单的思想也不复杂的才行。
于是找到下面的代码:
 1package BloodSucker;
 2
 3import java.util.Arrays;
 4
 5public class bloodSucker {
 6
 7    public static void main(String[] args) {
 8        for(int i = 10; i <= 99; i++){
 9            for(int j = 10; j<= 99; j++){
10                int sun = i*j;
11                if(sun >=1000 && sun <= 9999){
12                    String [] str = String.valueOf(sun).split("");
13                    Arrays.sort(str);    //按照字符的升序排列
14                    String [] str1 =(String.valueOf(i)+String.valueOf(j)).split("");
15                    Arrays.sort(str1);    //对两个Arrays进行比较
16                    if(Arrays.equals(str, str1)){
17                        System.out.println(i+"*"+j+"="+i*j);
18                    }

19                }

20            }

21        }

22
23    }

24
25}

26

虽然这并不是自己所作的,
但是作为学习。
还是作为笔记贴写出来吧。
其中最重要的思想就是利用Arrays进行对数字比较的操作。

源地址
http://bbs.chinajavaworld.com/thread.jspa?threadID=744858&tstart=0&messageID=781612

posted on 2008-10-08 10:03 duduli 阅读(679) 评论(2)  编辑  收藏 所属分类: java

评论

# re: 吸血鬼数字测试 2008-10-17 19:34 小Xiong

想问下博主,什么是吸血鬼数字?不能就举两个乘法例子啊,
想了好久都没想通。  回复  更多评论   

# re: 吸血鬼数字测试 2008-10-17 19:57 duduli

@小Xiong
所谓“吸血鬼数字”就是指位数为偶数的数字(我们算得是4位的),可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数字,其中从偶数位数字中选取的数字可以任意排列。以两个0截尾的数字是不允许的。例如:1260=21*60 1827=21*87 2187=27*81   回复  更多评论   

# re: 吸血鬼数字测试 2009-07-15 12:59 funlu

for(int j = 10; j<= 99; j++)
应该改成for(int j = i; j<=99; j++)

不然,你原先的这个代码会有重复的4位吸血鬼数字输出。(总共是7个,你输出的是14个,两两重复的)  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

公告

welcome to my place.

常用链接

留言簿(5)

我参与的团队

随笔分类

随笔档案

新闻分类

石头JAVA摆地摊儿

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

@duduli