全数字乘积 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 的形式,共有九位数,有可能成为一个全数字。
-
依次类推,我们可以发现五位数及以上的整数的形成的拼接乘积都要超过九位数,不可能是全数字
-
所以唯一能够形成九位数全数字的拼接乘积只能是四位数。