码迷,mamicode.com
首页 > 其他好文 > 详细

吸血鬼数解题思路

时间:2018-10-24 01:16:24      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:imp   一个   array   代码实现   out   auto   code   strong   spl   

《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);
                        //打印吸血鬼数
                    }
                }
            }
        }
    }

}

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

 

吸血鬼数解题思路

标签:imp   一个   array   代码实现   out   auto   code   strong   spl   

原文地址:https://www.cnblogs.com/ahJava/p/9840312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!