• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
阿海在学Java
博客园    首页    新随笔    联系   管理    订阅  订阅

吸血鬼数解题思路

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

}

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

 

你不会的东西,觉得难的东西,一定不要躲。先搞明白,后精湛,你就比别人优秀了。因为大部分人都不舍得花力气去钻研,自动淘汰,所以你执着的努力,就占了大便宜。奋斗就是每一天都很难,可一年比一年容易。不奋斗就是每一天都很容易,可一年比一年越难。怕吃苦的人吃苦一辈子,不怕吃苦的人吃苦一阵子。拼一个春夏秋冬,赢一个无悔人生
posted @ 2018-10-23 23:01  阿海在学Java  阅读(467)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3