欧拉计划32题

/**
* Pandigital products
* Problem 32
*
* We shall say that an n-digit number is pandigital
* if it makes use of all the digits 1 to n exactly once;
* for example, the 5-digit number, 15234, is 1 through 5 pandigital.
*
* The product 7254 is unusual, as the identity, 39 × 186 = 7254,
* containing multiplicand, multiplier, and product is 1 through 9 pandigital.
*
* Find the sum of all products whose multiplicand/multiplier/product identity
* can be written as a 1 through 9 pandigital.
*
* HINT: Some products can be obtained in more than one way
* so be sure to only include it once in your sum.
*
*/
分析
数A*数B=数C,共计9位,
只可能是 1位*4位=4位,或者 2位*3位=4位
因此只需两次两层循环,并判断相乘结果是否满足条件即可

代码实现:

for (int i = 1; i < 10; i++){
for (int j = 1234; j < 9877; j++){
int k = i * j;
String num = "" + i + j + k;
if (k / 10000 > 0){
break;
}
if (isPandigital(num)){
System.out.println("" + i + "*" + j + "=" + k);

}
}
}

for (int i = 12; i < 99; i++){
for (int j = 123; j < 988; j++){
int k = i * j;
String num = "" + i + j + k;
if (k / 10000 > 0){
break;
}
if (isPandigital(num)){
System.out.println("" + i + "*" + j + "=" + k);
}
}
}

结果:45228

4 * 1738 = 6952
4 * 1963 = 7852
12 * 483 = 5796
18 * 297 = 5346
27 * 198 = 5346
28 * 157 = 4396
39 * 186 = 7254
42 * 138 = 5796
48 * 159 = 7632
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值