吸血鬼数字

吸血鬼数字指,位数为偶数,可以由一对数字相乘得到,且这对数字各包含乘积的一半位数的数字。其中,从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的。找出所有四位数的吸血鬼数字。示例如下:

1260 = 21 * 60

1827 = 21 * 87

2187 = 27 * 81

思路:一个比较直接的思路,先遍历四位数,再拆分。但这样做的话,首先拆分有点麻烦,其次在组合成新的两位数时,还要考虑每个数字的先后问题(比如1和2,是组成12还是21)。本题逆向解决会比较方便,先遍历两位数,相乘后再判断是否满足条件。

import java.util.Arrays;
public class vampireNum {
    public static int isVampire(int num1, int num2){
        char[] num_p = (String.valueOf(num1) + String.valueOf(num2)).toCharArray(); 
//将一对int型数字转化为字符数组
        int num = num1 * num2;
        if (num < 1000 || num> 9999){
            return -1;       //乘积为非四位数
        }
        char[] num_c = String.valueOf(num).toCharArray();
        Arrays.sort(num_p); //将字符数组排序
        Arrays.sort(num_c);
        String p = String.valueOf(num_p); //char[]直接比较比较麻烦,转化成String再比较
        String c = String.valueOf(num_c);
        if (p.equals(c)){  
            return num;
        }
        return -1;
    }
    public static void main(String[] args){
        for (int i = 10; i <= 99; i++){
            for(int j = i; j<=99; j++){
                int result = isVampire(i,j);
                if(result!=-1){
                    System.out.println(result);
                }
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:选D,7+9=16;9+(-1)=8;(...
    Alex_bingo阅读 19,994评论 1 19
  • 简单了解吸血鬼数 今天看文档,突然看到一个奇怪的名字——“吸血鬼数”。大概查了一下,这种数字有正常的吸血鬼数,伪吸...
    Alisallon阅读 1,350评论 0 1
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,720评论 1 44
  • 2018年的第一场雪飘落之后,朋友圈里满满的雪景美图,有雪盖大地的,有雪压枝头的,有雪盖楼亭台榭的,有堆好雪...
    NancyQi阅读 749评论 12 12
  • # postgresql7.4.1初始化数据库 标签(空格分隔): postgresql, postgersql7...
    wanziforever阅读 393评论 0 0

友情链接更多精彩内容