【Java】求所有四位吸血鬼数字

 1 package com.xt.homework.tools;
 2 /**
 3  *
 4  * 7. 题目
 5  * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,
 6  * 而这对数字的位数是原数字的一半位数,并且由组成原数字的各个位数组成,
 7  * 以两个0结尾的数字不是吸血鬼数字。
 8  * 例如:1260 = 21 * 60    1827 = 21 * 87    2187= 27 * 81
 9  * 求所有四位吸血鬼数字
10  *
11  * @author 天耀二期
12  *              杨勃隆
13  */
14 public class HomeWork07 {
15     public static void main(String[] args){
16         for (int i = 1000; i <= 9999;i++)
17 {
18         int a = (int)(i/1000); //千位数字
19         int b = (int)((i - a*1000)/100); //百位数字
20         int c = (int)((i-((int)(i/100))*100)/10); //十位数字
21         int d = (int)(i - ((int)(i/10))*10); //个位数字
22         if(c==0&&d==0)
23             continue;
24         if((10*a+d)*(10*c+b)==i||(10*b+a)*(10*c+d)==i||
25         (10*b+a)*(10*d+c)==i||(10*b+d)*(10*c+a)==i||
26         (10*c+a)*(10*d+b)==i||(10*c+b)*(10*d+a)==i){
27             System.out.println(i);
28             }
29         }
30     }
31 }


真的想不出好办法了,有大神有简单方法请贴到评论区谢谢!

时间: 2024-12-17 17:54:50

【Java】求所有四位吸血鬼数字的相关文章

Java实现4位数吸血鬼数字算法

定义:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序,以两个0结尾的数字是不允许的.如1260 = 21 * 60,2187 = 27 * 81等. 本例中实现4位数之内的所有吸血鬼数字. 核心代码: public static void main(String[] args) { //吸血鬼数字计数器 int count = 0; //乘积数字 int m = 0; //字符组,匹配用的 char[] a

java吸血鬼数字

很惭愧(其实没什么惭愧,水平就这样),搞了半晌才写出来了一个求四位吸血鬼数字的方法 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序. 以两个0结尾的数字是不允许的,例如,下列数字都是"吸血鬼"数字: 1260 = 21 * 60 1827 = 21 * 87 2187 = 27 * 81 int len = 4; // 求出四位值得范围 int max = (int) (Math.pow(10,

Thinking In Java 里面吸血鬼数字题

首先解释一下吸血鬼数字:吸血鬼数字是指位数为偶数的数字,可由一对数字相乘而得到,这对数字各包含乘积的一半位数的数字,以两个0结尾的数字是不允许的. 四位数吸血鬼数字示例:1260=21*60,1827=21*87,2187=27*81-- 先列出结果:一共7个:1260=21*60,1395=15*93,1435=41*35,1530=51*30,1827=87*21,2187=27*81,6880=86*80 方法一: 本方法是<Thinking in Java>的官方答案,由于所处章节很靠

【Java】 Thinking in Java 4.8 练习10 吸血鬼数字

题目: 吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序.  以两个0结尾的数字是不允许的.写一个程序,找出4位数中所有吸血鬼数字. 方法一: 1 public static void main(String[] args) { 2 outer: for (int i = 10; i <= 99; i++) { 3 for (int j = i + 1; j <= 99; j++) { 4 int sum =

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

最近在看<Java编程思想>,这本书非常棒,不愧是Java程序员的圣经.看到第四章,后面有道题目很有意思,于是就自己做了做. 1. 我的思路很简单,但是算法效率非常之低.就是把4位数拆成4个数字,比如1260--->1,2,6,0.然后4位数字组合成两个2位数,计算它们 的乘积,相等则就是吸血鬼数字. 1 public class Test2 { 2 /* 3 * 将4位数拆分成4个数 4 * */ 5 public int [] array(int num){ 6 int [] a =

Java编程思想——吸血鬼数字问题

吸血鬼数字:我最开始想的是把四位数拆开,然后进行自由组合然后相乘,最后比较得到结果,在网上去看了一些朋友的做法,让我大吃一惊啊,想到自己的算法也要好好看了 ,这样子下去是不行滴 现贴出代码: package edu.cqu.main; import java.util.Arrays; /** * 问题描述: * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字, * 其中从最初的数字中选取的数字可以任意排序. * 例如: * 1260 = 21 *

Java - 吸血鬼数字

吸血鬼数字是指位数是偶数的数字, 由一对相乘的数字得到, 而且每个数字包含乘积一半位数的数字. 如: 1092: 12*91 1207: 17*71 1250: 25*50 1260: 21*60 1275: 17*75 1278: 18*71 1325: 25*53 找出4位数的所有吸血鬼数字. //: Main.java import java.util.ArrayList; /** * 吸血鬼数字 */ class Main { public static boolean vampire(

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

/** * 找出四位数的全部吸血鬼数字 * 吸血鬼数字是指位数为偶数的数字,能够由一对数字相乘而得到,而这对数字各包括乘积的一半位数的数字,当中从最初的数字中选取的数字能够随意排序. * 以两个0结尾的数字是不同意的. *   比例如以下列数字都是吸血鬼数字 1260=21*60 1827=21*87 2187=27*81 ... * 比較笨的低效率的做法: 遍历全部四位数, 每生成一个四位数的时候, *         在双重循环遍历两位数,在两位数的内层循环中推断是否与最外层循环的四位数相等

【Java编程思想 - 练习】吸血鬼数字

Thinking in Java 这个程序我自己敲出来的代码,用的方法很笨的感觉,将就着吧,目前没时间想那么多,得继续学啊. 1 class Vnum{ 2 public static void main(String args[]){ 3 CheckVampire cVampire = new CheckVampire(); 4 for(int i=1000;i<10000;i++){ 5 if(cVampire.isVampire(i)){ 6 System.out.println(i);