本帖最后由 TSC999 于 2023-12-10 19:49 编辑 将数字1, 2, 3, 4, 5, 6, 7, 8, 9 分成三组,各自组成一个数字不重复的三位数, 如果最大的三位数是最小的 3 倍,次大的三位数是最小的 2 倍,问满足这种情形的数字组合有多少种?
答案是共有四种:
这种问题可以编程解决:
- Clear["Global`*"];(*将数字1,2,3,4,5,6,7,8,9分成三组,各自组成一个数字不重复的三位数,如果最大的三位数是最小的 3 倍,次大的三位数是最小的 2 倍,问满足这种情形的数字组合有多少种*)
- a = Permutations[{1, 2, 3, 4, 5, 6, 7, 8, 9}];(*9个元素的全排列*)
- k = 0;
- Do[b = Partition[a[[i]], 3];(*9个元素分成三组*)
- c1 = ToExpression[StringJoin @@ ToString /@ b[[1]]];(*第一行列表转换成数字*)
- c2 = ToExpression[StringJoin @@ ToString /@ b[[2]]];(*第二行列表转换成数字*)
- c3 = ToExpression[StringJoin @@ ToString /@ b[[3]]];(*第三行列表转换成数字*)
- d3 = Max[c1, c2, c3];(*最大者*)
- d1 = Min[c1, c2, c3];(*最小者*)
- If[(d3 == c3 && d1 == c2) || (d3 == c2 && d1 == c3),
- d2 = c1];(*确定次大者*)
- If[(d3 == c3 && d1 == c1) || (d3 == c1 && d1 == c3), d2 = c2];
- If[(d3 == c1 && d1 == c2) || (d3 == c2 && d1 == c1), d2 = c3];
- If[d3 == 3 d1 && d2 == 2 d1 && c1 == Min[c1, c2, c3] &&
- c3 == Max[c1, c2, c3], k++; Print[k, "-----", b]],
- {i, 1, Length[a]}]
Copy the Code
有网友问,如果不用编程方法,有没有别的方法? |