找回密码
 欢迎注册
楼主: 王守恩

[原创] 2025个数码,求最小的45位数

[复制链接]
 楼主| 发表于 2025-8-20 16:04:21 | 显示全部楼层
太难了!简单一点。

1, 用30个数码,恰好可以组成10个数, 其中有4个2位数,3个3位数,2个4位数,1个5位数, 10个数的积最大 = ________ 。这10个数(从小到大)=___。
30个数码 ={3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6, 4, 3, 3, 8, 3, 2, 7}

2, 用30个数码,恰好可以组成10个数, 其中有4个2位数,3个3位数,2个4位数,1个5位数, 10个数的积最大 = ________ 。这10个数(从小到大)=___。
30个数码 ={2, 7, 1, 8, 2, 8, 1, 8, 2, 8, 4, 5, 9, 0, 4, 5, 2, 3, 5, 3, 6, 0, 2, 8, 7, 4, 7, 1, 3, 5}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 7 天前 | 显示全部楼层
继续前进!  在同等条件下这n(n+1)/2个数的乘积是最大的!!!

A={2, 7, 1, 8, 2, 8, 1, 8, 2, 8, 4, 5, 9, 0, 4, 5, 2, 3, 5, 3, 6, 0, 2, 8, 7, 4, 7, 1, 3, 5, 2, 6, 6, 2, 4, 9, 7, 7, 5, 7, 2, 4, 7, 0, 9, 3, 6, 9, 9, 9, 5, 9, 5, 7, 4, 9}

题目: 用A前n(n+1)(n+2)/6个数码, 恰好可以组成n(n+1)/2个数, 其中有n个1位数, (n-1)个2位数, (n-2)个3位数, (n-3)个4位数, ..., 3个(n-2)位数,2个(n-1)位数,1个n位数 = R(n)。譬如:

n=1, {2}, R(1)=2,

n=2, {8,7,21}, R(2)=21,

n=3, {8,8,8,81,72,221}, R(3)=221,

n=4, {9,8,8,8,82,72,53,531,521,4420}, R(4)=4420,

n=5, {9,8,8,8,8,82,73,73,72,642,641,632,5520,5421,54210}, R(5)=54210,

n=6, {9,9,9,9,9,9,94,94,85,85,85,842,842,763,763,7621,7621,7542,75420,75321,753200}, R(6)=753200,

n=7, {9,9,9,9,9,9,9,95,95,95,85,85,85,853,853,773,764,764,7642,7642,7642,7642,76421,76420,76321,763210,755320,7543200}, R(7)=7543200,

n=8, {9,9,9,9,9,9,9,9,95,95,95,95,95,95,86,853,853,853,853,853,853,7742,7732,7652,7652,7643,76431,76431,76431,76422,764220,764220,764220,7642200,7642110,76421100}, R(8)=76421100,
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 6 天前 | 显示全部楼层
题1——用45个数码, 1,2,3,4,5,6,7,8,9各5个。组成9个数, 1,2,3,4,5,6,7,8,9位数各1个。当9个数的乘积最大时, 这9个数=____(从小到大)。

题2——用45个数码, 1,2,3,4,5,6,7,8,9各5个。组成9个数, 1,2,3,4,5,6,7,8,9位数各1个。当9个数的乘积最小时, 这9个数=____(从小到大)。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 6 天前 | 显示全部楼层
如果每个数的位数一致,用 mathe 在 3# 的策略即可

如果要求的数列位数不一致,又该如何呢?我们可以将其转化为位数一致的情形:
  • 寻找目标数列中要求位数最长的那个,记录其位数 \(k\),乘以项数 \(n\) 得到总数码的位数 \(N_{new}= k * n\)
  • 原数码全部用绿色标记,位数为 \(N_{old}\),补充 \((N_{new}-N_{old})\) 个黄色数码“0”进入序列(用不同的颜色,以便与原数码中的“0”进行区分)
  • 用 mathe 策略填数字,并注意数列中,一旦出现满足当前最短数列长度时,后面只允许跟填黄色数码“0”
  • 删除所有的黄色数码“0”,即得到所需的数列
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 6 天前 | 显示全部楼层
去问"DeepSeek"——这样答复。
根据问题要求,使用45个数码(数字1到9各5个)组成9个数,其位数分别为1位、2位、3位、4位、5位、6位、7位、8位、9位各一个。
......

对于题1,当9个数的乘积最大时,这些数按从小到大排列为:
9, 99, 998, 8888, 77777, 666665, 5554444, 44333332, 222211111,

对于题2,当9个数的乘积最小时,这些数按从小到大排列为:
9, 99, 899, 8888, 77777, 566666, 4445555, 23333344, 111112222,

点评

不对。见 17#  发表于 5 天前
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 5 天前 | 显示全部楼层
10个数码:1,2,3,4,5,6,7,8,9,0。分成n(n>1)个正整数。当n个正整数乘积最大时, n个正整数=____。

已深度思考——用时835秒
......

为了最大化10个数码(1,2,3,4,5,6,7,8,9,0)分成n个正整数的乘积,其中n>1,需将数码分成两个数字:一个数字包含0,另一个数字包含剩余数码。
通过计算不同分组的乘积,发现当数字为960和8754321时,乘积最大。乘积计算:960 × 8754321 = 8404148160。

点评

因为 n 越大,乘积性能损失越大;如果允许 n=1,9876543210 即为最佳  发表于 5 天前
96420 * 87531 = 8439739020 > 8404148160  发表于 5 天前
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 5 天前 | 显示全部楼层
王守恩 发表于 2025-8-22 17:59
去问"DeepSeek"——这样答复。
根据问题要求,使用45个数码(数字1到9各5个)组成9个数,其位数分别为1位、 ...

关于第1题,你用DeepSeek得到的数列为:{ 9, 99, 998, 8888, 77777, 666665, 5554444, 44333332, 222211111 }
我用14#的策略,人工排列得到的数列为:{ 9, 97, 975, 9654, 96543, 885432, 8765322, 87643211, 876432111 }

上一排数列之积:  22,423,730,776,425,408,127,232,114,167,844,336,092,911,360(共44位)
下一排数列之积:472,940,595,468,304,999,743,644,807,829,352,019,687,786,400(共45位)


再看第2题,你用DeepSeek得到的数列为:{ 9, 99, 899, 8888, 77777, 566666, 4445555, 23333344, 111112222 }
用类似14#策略,人工排列得到的数列为:{ 1, 12, 134, 1345, 13467, 235678, 2356788, 24567889, 245678999 }

上一排数列之积: 3,616,467,687,831,006,198,974,075,375,291,724,166,210,560(共43位)
下一排数列之积:97,646,037,973,144,395,075,318,619,664,156,191,680(共38位)


也就是说,人工智能给出的答案都不是最优的!!!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 5 天前 | 显示全部楼层
其实此题,无论是要求积最大还是最小,其核心都可归结于一个简单朴素的公式:\[a*b=\left(\dfrac{a+b}{2}\right)^2 - \left(\dfrac{a-b}{2}\right)^2 \label{※}\tag*{[※]}\]
即:当两数和为定值时,其乘积随两者之差变大而减小

因为乘法具有交换律和结合律,再反复利用上面的结论,即可得到如下策略:

  • 整数的乘积,高位比低位贡献更大,所以从高位到低位来确定,每次将数列中各数的位数增1即可,此乃策略一

  • 如果是要求积最大,就需要在现有数码中从大到小优选,否则反之,此乃策略二

  • 由策略二选择好新增的数码作为数列各数新增尾数,无论如何追加,此时数列里各数总和必为定值,
    由\(\ref{※}\),若需积最大,只需它们之间差尽可能小,反之则需尽可能大,此乃策略三

  • 如果目标数列中各数位数不一致时,需要提前锁定,即不再其后新增尾数;
    此时从策略二中,选择的数码数目将需要删减,并以虚拟的数码“0”补全,
    然后执行策略三,追加虚拟数码“0”的数,删除当前新增的“0”并锁定之,此乃策略四


策略四中,之所以将虚拟数码看作“0”,是因为它本身为最小,可以继续用策略三;同时,它对积的贡献,只是在后面增减一个“0”而已
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 09:47 | 显示全部楼层
题目1。A = {1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,......},
用A前n^2个数码, 恰好可以组成n个n位数,当n个数乘积最小时,其中最大的n位数=R(n)。R(n)是这样一串数。
{1, 24, 369, 2469, 24579, 235689, 2345789, 13456789, 123456789, 1234567899, 12344567899, 123345667899, 1233455677899, 12234456677899, 122334556678899, 1223344556778899, 12233445566778899, 112233445566778899}
Table[s = Sort[Mod[Range[0, n^2 - 1], 9] + 1]; v = s[[ ;; n]]; Do[w = Ordering[v, 1][[1]]; v[[w]] = v[[w]]*10 + d, {d, s[[n + 1 ;;]]}]; Max[v], {n, 18}]
编码依据: 1,将A前n^2个数码进行升序排列。2,分配n个最小数码(非0)为最高位,使n个数每个都有一个当前值。3,每次进行相同的分配:依次取数码填在当前值最小的数后面。4,最后得到最小的n位数=R(n)。

题目2。A = {1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,......},
用A前n^2个数码, 恰好可以组成n个n位数,当n个数乘积最大时,其中最小的n位数=R(n)。R(n)是这样一串数。
{1, 32, 763, 7642, 77542, 886532, 8865432, 88765431, 987654321, 9876654321, 98776543321, 988765543321, 9887665443221, 98877655433221, 988876655433221, 9888776554433211, 98887766554433211, 998877665544332211}
Table[s = Sort[Mod[Range[0, n^2 - 1], 9] + 1, Greater]; t = s[[ ;; n]]; Do[w = Ordering[t, 1][[1]]; t[[w]] = t[[w]]*10 + d, {d, s[[n + 1 ;;]]}]; Min[t], {n, 18}]
编码依据: 1,将A前n^2个数码进行降序排列。2,分配n个最大数码为最高位,使n个数每个都有一个当前值。3,每次进行相同的分配:依次取数码填在当前值最小的数后面。4,最后得到最小的n位数=R(n)。

题目3。A = {1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,......},
用A前n^2个数码, 恰好可以组成n个n位数,当n个数乘积最小时,其中最大的n位数=R(n)。R(n)是这样一串数。
{1, 24, 369, 2469, 23579, 234679, 2245789, 22345789, 123456789, 1023456789, 10234567899, 102344567899, 1023345667899, 10223445677899, 101233455677899, 1012334456678899, 10122344556778899, 101223344566778899}
Table[s = Sort[Mod[Range[n^2], 10]]; t = Count[s, 0]; v = s[[t + 1 ;; t + n]]; Do[w = Ordering[v, 1][[1]]; v[[w]] = v[[w]]*10 + d, {d, Join[s[[1 ;; t]], s[[t + n + 1 ;;]]]}]; Max[v], {n, 18}]
编码依据: 1,将A前n^2个数码进行升序排列。2,分配n个最小数码(非0)为最高位,使n个数每个都有一个当前值。3,每次进行相同的分配:依次取数码填在当前值最小的数后面。4,最后得到最小的n位数=R(n)。

题目4。A = {1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,......},
用A前n^2个数码, 恰好可以组成n个n位数,当n个数乘积最大时,其中最小的n位数=R(n)。R(n)是这样一串数。
{1, 32, 763, 6642, 77531, 875421, 8865421, 88754321, 887654321, 9876543210, 98765543210, 987765432210, 9877665433210, 98876554432210, 988766554332110, 9887766544322110, 98887665544322110, 988877655443322110}
Table[s = Sort[Mod[Range[n^2], 10], Greater]; t = s[[ ;; n]]; Do[w = Ordering[t, 1][[1]]; t[[w]] = t[[w]]*10 + d, {d, s[[n + 1 ;;]]}]; Min[t], {n, 18}]
编码依据: 1,将A前n^2个数码进行降序排列。2,分配n个最大数码为最高位,使n个数每个都有一个当前值。3,每次进行相同的分配:依次取数码填在当前值最小的数后面。4,最后得到最小的n位数=R(n)。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2025-8-28 02:30 , Processed in 0.025367 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表