Java复习笔记6【求四位吸血鬼数字】
来源:互联网 发布:node 绑定域名 编辑:程序博客网 时间:2024/06/05 03:07
package com.lesson8.test;/* * 【题目】吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字的位数是原数字的一半位数, * 并且由组成原数字的各个位数组成,以两个0结尾的数字不是吸血鬼数字。 * 例如:1260 = 21 * 60 1827 = 21 * 87 2187= 27 * 81 , * 求所有四位吸血鬼数字 * *//* * 【解题思路】当前的解题思路很简单暴力,主要是利用枚举法,排序也是自定义的函数,并不复杂 * 1.利用枚举法:由于将所有四位数枚举一遍不能够得到由两个两位数相乘的四位数,因此需要枚举两位数, * 得到可能为吸血鬼数字的四位数 * 即 x * y = z, x和 y是两位数,z是四位数 * 2.判断是否为吸血鬼数字:这对数字由组成原数字的各个位数组成,则只要所有位数相同就是吸血鬼数字 * 即 x * y = z,组成x和y的4个数和组成z的4个数相同 * 3.如何判断所有位数相同:将所有位数按序排列,最后得到两个内部有序的数字进行比较 * x * y = z,x和y的4个数排序后得到数字m,z内部位数排序后得到数字n,如果m == n, * 表示x和y的4个数和z的4个数相同,否则表示存在不同的位数,则不是吸血鬼数 * *///以1260 = 21 * 60 为例//1260-----排序后为6210//21 * 60------排序后为6210public class Test { /* * 该方法用于枚举两位数,并判断是否为吸血鬼数字 * */ public void getNum(){ for(int x = 10; x <= 99; x++){ for(int y = x; y <= 99; y++){ //y=x避免重复 if(x * y < 1000 || x * y > 10000){ continue; //如果x*y不是四位数,则不符合条件,继续遍历 } //判断是否为吸血鬼数字 if(sort(x*100+y) == sort(x*y)){ System.out.println(x + " * " + y + " = " + x*y); } } } } /* * 该方法用于对给定四位数进行内部排序(递减) * @param num int * return int 排序后得到的最大数 * */ public int sort(int num){ int n1 = num / 1000; int n2 = num % 1000 / 100; int n3 = num % 100 / 10; int n4 = num % 10; //一般三个以上数字的排序都可以转化成三个数字的排序, //三个数字的排序则就是求最大、最小、中间值的固定套路 int max = getMax(n1, getMax(n2, getMax(n3, n4))); int last3 = 0;//用来存储除最大数外其余三位数组成的最大数 if(n1 == max){ last3 = last3(n2, n3, n4); }else if(n2 == max){ last3 = last3(n1, n3, n4); }else if(n3 == max){ last3 = last3(n1, n2, n4); }else{ last3 = last3(n1, n2, n3); } return (max * 1000 + last3); } /* * 该方法用于获取最大值 * */ public int getMax(int x, int y){ return x>y?x:y; } /* * 该方法用于获取最小值 * */ public int getMin(int x,int y){ return x>y?y:x; } /* * 该方法用于得到除最大数外其余三位数组成的最大数 * */ public int last3(int x,int y,int z){ int max = getMax(x,getMax(y,z)); int min = getMin(x,getMin(y,z)); int mid = x + y + z - max - min; return (max*100+mid*10+min); } public static void main(String args[]){ Test t = new Test(); t.getNum(); }}
0 0
- Java复习笔记6【求四位吸血鬼数字】
- JAVA 吸血鬼数字学习
- 吸血鬼数字(java)
- Java - 吸血鬼数字
- java 吸血鬼数字
- Java 吸血鬼数字
- 吸血鬼数字(JAVA)
- 吸血鬼数字java算法
- 【java】吸血鬼数字
- java编程思想学习笔记(4)--吸血鬼数字
- java求吸血鬼数字算法 。。。
- 用java求吸血鬼数字
- java输出吸血鬼数字小结
- 吸血鬼数字算法—Java
- Thinking in Java--吸血鬼数字
- JAVA中关于吸血鬼数字
- [Thinking in Java]“吸血鬼”数字
- 吸血鬼数字--Java实现探究
- matlab 生成 稀疏 对称正定 矩阵
- CodeForces Prizes, Prizes, more Prizes
- snow night 门谷纯
- hdu 1710 Binary Tree Traversals
- MySQL中使用子查询IN效率较低的问题
- Java复习笔记6【求四位吸血鬼数字】
- UDP socket programming in winsock
- 黑马程序员——C语言——预处理指令
- Linux socket之四:使用POLL机制处理多连接
- 设置UITabBar自己为代理实现页面的动画转场(MS)
- 解决Qt单元测试自定义类型报错的问题
- 第六题
- Android Studio系列教程三--快捷键
- LeetCode | Climbing Stairs