吸血鬼数解题思路

Posted ahjava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吸血鬼数解题思路相关的知识,希望对你有一定的参考价值。

《Java编程思想》中有这样一道题:

  • 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到。而这两位数字必须包含乘积的所有数字(顺序可以任意排序),能够被100整除的数是不允许的:

例如以下都是吸血鬼:

1260=21*60

1827=21*81

2187=27*81

那我们来分析一下题:

给了我们以下几个有用的条件:

  • 由两位数相乘而得到并且包含乘积的所有数,说明乘积必须为4位(那范围必须在1000到9999之间)
  • 不能被100整除

既然是两位数字相乘而得到那么范围就控制在:10~99,必须包含乘积的所有数字那么就表示乘积和这两对数一定要相同,这里我们可以用数组来进行比较。

我们来看一下代码实现

package com.itheima.test;

import java.util.Arrays;


public class Mian {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for (int i = 10; i <100; i++) {
            //i表示第一个两位数
            for (int j = 10; j < 100; j++) {
                //j表示第二个两位数
                int product=i*j;
                //获得乘积
                if(product%100!=0&&product>999&&product<10000) {
                    //过滤条件:1不能被100整除2必须是4位数
                    String[] value1=String.valueOf(product).split("");
                    //把乘积转换为字符串,然后在以空格分割为数组
                    String[] value2=(String.valueOf(i)+String.valueOf(j)).split("");
                    //把两位数相连接为字符串,然后在以空格分割为数组
                    Arrays.sort(value1);
                    //排序一下从小到大
                    Arrays.sort(value2);
                    //排序一下从小到大
                    if (Arrays.equals(value1, value2)) {
                        //调用Arrays中的静态方法equals进行比较
                        System.out.println(i+"*"+j+"="+product);
                        //打印吸血鬼数
                    }
                }
            }
        }
    }

}

这个题就做完啦,就是那么简单

 

以上是关于吸血鬼数解题思路的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode题解....ing python

华为OD机试真题Python实现最小步骤数真题+解题思路+代码(2022&2023)

LeetCode解题思路及最佳代码 -- Python3实现 -- 更新中

华为OD机试真题Java实现水仙花数真题+解题思路+代码(2022&2023)

华为OD机试真题Python实现水仙花数真题+解题思路+代码(2022&2023)

数据结构荣誉课---第一次实验解题报告