栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 038. 全数字乘积 II

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 038. 全数字乘积 II

全数字乘积 II
用数字 192 分别乘以 1,2,3 可以得到:
192×1=192
192×2=384
192×3=576
把每个乘积前后相接,我们可以得到一个全数字 192384576。我们把 192384576 称为 192 和
(1,2,3)的拼接乘积。
类似的,我们可以用数字 9 乘以 1,2,3,4 和 5 得到全数字 918273645,它是 9 和(1,2,3,4,5)
的拼接乘积。
求用一个整数和(1,2,3⋯,n)形成的拼接乘积中最大的全数字,其中 n>1。
答案:932718654
思路:
可通过题意得出整数的范围,在范围里求最大解
代码如下:

public static long num(){
        long t,max=0;
        String s;
        for(int i=1;i<10000;i++){
            s="";
             for(int j=1;j<=9;j++){
                 t=i*j;
                 s+=String.valueOf(t);
                 if(s.length()==9){
                     char[]temp=s.toCharArray();
                     Arrays.sort(temp);
                     if(new String(temp).equals("123456789")&&Integer.valueOf(s)>max) max=Integer.valueOf(s);
                     break;
                 }
             }
        }
        return max;
    }
    public static void main(String[] args) {
        System.out.println(num());
    }

程序运行截图:

可通过以下思路将数字范围再度缩小:

题目中给出了 918273645 这个拼接乘积,所求的全数字必然要大于这个数字,所以所求的全数字的首位
数必然是 9。

此外,这个乘积是也是一位数所能构成的最大拼接乘积,因此我们可以直接考虑两位数:

假设这个两位数是 9A 的形式,用它乘以(1,2,3)得到的拼接乘积形式为 9A18B27C 是一个八位数,不可
能是一个全数字;

假如用其乘以(1,2,3,4)得到的拼接乘积是 9A18B27C36D 的形式,是一个十一位数,也不可能是一个全数
字,

所以满足题目要求的整数不可能是一个两位数。

同理,设我们有一个三位数 9AB:

其与(1,2)的乘积为 9AB18CD 的形式,共有七位数;

其与(1,2,3)的拼接乘积为 9AB18CD27EF 的形式,共有十一位数,不可能是一个全数字,

因此所求整数也不是一个三位数。

接下来,我们看四位数,设其形式为 9ABC:

则其与(1,2)的拼接乘积为 9ABC18DEF 的形式,共有九位数,有可能成为一个全数字。

依次类推,我们可以发现五位数及以上的整数的形成的拼接乘积都要超过九位数,不可能是全数字

所以唯一能够形成九位数全数字的拼接乘积只能是四位数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/723580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号