吸血鬼数字 java_找出吸血鬼数(Java)
importjava.util.ArrayList;importjava.util.Arrays;/*** 先从1001开始到9999开始判断,是否能分解为两个二位数,如果可以,二维数是否包含所有四个数字
* 把四位数分解成二位数乘积过于麻烦,而且一个四位数可能存在多种分解方式,加大了设计的难度
* 但是反过来,二位数乘以二位数简单得多,此时再去判断即可
* 将积分解成四个数位,存入数组。两个乘数分别分解成两个数位,存入一个数组
* 将两个数组排序,按照下标逐个比较,如果两个数组相同,返回true
*@authorzhaoke
**/
public classVampire {//冒泡排序法
public void sort(int[] array) {for (int i = 0; i < array.length-1; i++) {for (int j = i+1; j < array.length; j++) {if (array[i] >array[j]) {//交换两个数的位置
array[i] = array[i] -array[j];
array[j]= array[i] +array[j];
array[i]= array[j] -array[i];
}
}
}
}/*** 判断四位数分解后的数位(存在数组里),是否恰好包含两个乘积因子的所有数位
* 为了简单起见,方法是先排序,然后比较两个数组是否相同*/
public boolean check(int[] digits, int num1, intnum2) {this.sort(digits);//System.out.println(Arrays.toString(digits));
int[] factors = new int[4];//分离第一个乘数的两个数位
int[] numArray = this.divideNumber(num1);for (int i = 0; i < 2; i++) {
factors[i]=numArray[i];
}//分离第二个乘数的两个数位
numArray = this.divideNumber(num2);for (int i = 2; i < 4; i++) {
factors[i]= numArray[i-2];
}this.sort(factors);//System.out.println(Arrays.toString(factors));
for (int i = 0; i < digits.length; i++) {if (digits[i] !=factors[i]) {return false;
}
}return true;
}public int[] divideNumber(intnumber) {int[] digits = new int[2];
digits[0] = number/10;
digits[1] = number - 10*(number/10);returndigits;
}/*** 获得每个位的数字*/
public int[] divideArray(intnumber) {int[] digits = new int[4];int factor = 1000;for (int i = 0; i < digits.length; i++) {
digits[i]= number/factor;
number-= digits[i] *factor;
factor/= 10;
}returndigits;
}
ArrayList result = new ArrayList();/*** 10*99小于1000,因此从11开始循环*/
public voidstart() {int count = 0; //计数器而已
for (int i = 11; i < 100; i++) {for (int j = 11; j < 100; j++) {if (i*j <1000)continue;if (i*j%100==0) {//根据题目,如果最后两位是0,也不可
continue;
}int[] digits = divideArray(i*j);if (this.check(digits, i, j)) {if (this.result.contains(i*j))continue;this.result.add(i*j);
System.out.printf("第%d个吸血鬼数: %d = %d x %d \n",++count,i*j,i,j);
}
}
}
}public static voidmain(String[] args) {
Vampire v= newVampire();
v.start();
}
}
吸血鬼数字 java_找出吸血鬼数(Java)相关推荐
- Java黑皮书课后题第7章:7.14(计算gcd)编写方法,返回个数不确定的整数的最大公约数。编写一个测试程序,提示用户输入5个数字,调用该方法找出这些数的最大公约数,并显示这个最大公约数
7.14(计算gcd)编写方法,返回个数不确定的整数的最大公约数.编写一个测试程序,提示用户输入5个数字,调用该方法找出这些数的最大公约数,并显示这个最大公约数 题目 题目描述 破题 代码 运行实例 ...
- 输入一个正整数,统计整数中各位数字值为零的个数,并把该整数中各位上最大的数字值找出和零的个数组成一个新数字输出
/*** 输入一个正整数,统计整数中各位数字值为零的个数,并把该整数中各位上最大的数字值找出和零的个数组成一个新数字输出*/import java.util.Scanner;public class ...
- C语言:有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数。如果不在数组中,打印“not found”。
/*有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数.如果不在数组中,打印"not found".*/#include<stdio ...
- c语言 有15个数按由大到小,C++ 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。...
有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,则输出"无此数". 以下是此题的[c++源代码],需要[c ...
- 使用Cheat Enginee(CE)找出“雷数”、“笑脸”和“计时器”
使用Cheat Enginee(CE)找出"雷数"."笑脸"和"计时器" 找出"雷数"的内存地址: 一.在ce中输入雷数 ...
- java编程找出吸血鬼数字,Java 找到四位数的所有吸血鬼数字 基础代码实例
Java 找出四位数的所有吸血鬼数字 基础代码实例 /** * 找出四位数的所有吸血鬼数字 * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最 ...
- java编程找出吸血鬼数字,找出四位數的所有吸血鬼數字(JAVA)
/** * 找出四位數的所有吸血鬼數字 * 吸血鬼數字是指位數為偶數的數字,可以由一對數字相乘而得到,而這對數字各包含乘積的一半位數的數字,其中從最初的數字中選取的數字可以任意排序. * 以兩個0結尾 ...
- 吸血鬼数字java_吸血鬼数字
所谓"吸血鬼数字"就是指位数为偶数的数字(我们算得是4位的),可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数字,其中从偶数位数字中选取的数字可以任意排列.以两个0截尾的数 ...
- 一个数里有那些约数用c++怎么做_如何从一堆数里找出哪几个数相加等于你要的值?...
凑数在更深一步财务数据分析和核算中有着很重要的作用 你是否有遇到过收到的一笔款对应哪几个发票金额?一张发票对应哪几笔收款?等等其他方面需要从一堆数里凑几个数等于你要的值. 对于数字敏感的人,一些简单的 ...
最新文章
- yarn 切换 设置 镜像 源
- Geomagic Freeform Plus 2019中文版
- XENSERVER 图形界面安装Linux
- php生成图片验证码代码,PHP生成图片验证码以及点击切换的代码
- leetcode107. 二叉树的层次遍历 II
- 前端学习(1164):剩余参数02
- 最全的BI工具选型指南!给你五大箴言要记住
- Linux 环境下安装 MySQL,各种踩坑、疑难杂症 | 原力计划
- oracle 监听 多个实例,oracle 监听(多实例监听配置)
- 分析EOF究竟是什么
- 小飞鱼二开 使用jwt TOKEN方式单点登录开发(代码)
- JAVA 根据身份证计算年龄
- 2020-08-18
- 倪静(201550919)第一次作业
- 电脑开启wifi热点
- 调剂深圳大学计算机技术,深圳大学:2020年硕士研究生招生调剂办法公告
- Linux安装Vmware Workstation
- 性能测试中设计性能场景
- 海马汽车经销商管理系统技术解析(七)投诉处理
- getTextSize()和putText()