用 0123456789 这十个无重复的数字,组成一位数、两位数、三位数、四位数各一个,A、B、C、D;其中,A不能等于0。
问题:ABC*D 的乘积最大和最小分别是多少?具体是哪四个数组成的算式?
求:算法,思路。
数字0~9组成的四个数乘法算式,求乘积最大和最小的算法思路
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注 使用全排列函数枚举0 ~ 9所有顺序数字,把特殊情况排除掉,如0开头,以及每个数字前面都不能为0。需要3 ~ 4秒钟出结果。
import itertools ma = -1 mi = float("inf") dic = {} for t in tuple(itertools.permutations([str(i) for i in range(9,-1,-1)])): if t[0] == '0': break if t[4] == '0' or t[7] == '0' or t[9] == '0': continue D = int(''.join(t[0:4])) C = int(''.join(t[4:4+3])) B = int(''.join(t[7:7+2])) A = int(''.join(t[9:9+1])) mul = D * C * B * A if mul > ma: ma = mul dic[ma] = (D,C,B,A) if mul < mi: mi = mul dic[mi] = (D,C,B,A) print(ma,dic[ma]) print(mi,dic[mi])
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 用51单片机控制急停。
- ¥15 孟德尔随机化结果不一致
- ¥15 在使用pyecharts时出现问题
- ¥15 深度学习残差模块模型
- ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
- ¥15 差动电流二次谐波的含量Matlab计算
- ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
- ¥15 C#如何调用串口数据
- ¥15 MATLAB与单片机串口通信
- ¥15 L76k模块的GPS的使用