用1-9一共9个数字,把100写成分数形式

STEM版,合并数学,物理,化学,科学,工程,机械。不包括生物、医学相关,和计算机相关内容。

版主: verdeliteTheMatrix

回复
头像
verdelite楼主
论坛元老
论坛元老
帖子互动: 1039
帖子: 24248
注册时间: 2022年 7月 21日 23:33

用1-9一共9个数字,把100写成分数形式

帖子 verdelite楼主 »

类似这样的,13=9(5472/1368)
9后面不是乘号哦
怎么感觉是个编程题,LOL。学了python 的应该能编出来。
头像
(ヅ)
论坛支柱
论坛支柱
帖子互动: 549
帖子: 11819
注册时间: 2022年 8月 21日 14:20

Re: 用1-9一共9个数字,把100写成分数形式

帖子 (ヅ) »

9后面是加号?

edit:懂了,9又1368分之5472
头像
verdelite楼主
论坛元老
论坛元老
帖子互动: 1039
帖子: 24248
注册时间: 2022年 7月 21日 23:33

Re: 用1-9一共9个数字,把100写成分数形式

帖子 verdelite楼主 »

(ヅ) 写了: 2023年 1月 28日 15:17 9后面是加号?
就是几又几分之几的意思。3 1/2=3.5那样的。为了防止看错所以我加了括号
头像
(ヅ)
论坛支柱
论坛支柱
帖子互动: 549
帖子: 11819
注册时间: 2022年 8月 21日 14:20

Re: 用1-9一共9个数字,把100写成分数形式

帖子 (ヅ) »

3(69258/714)
[3, 69258, 714]
[81, 5643, 297]
[81, 7524, 396]
[82, 3546, 197]
[91, 5742, 638]
[91, 5823, 647]
[91, 7524, 836]
[94, 1578, 263]
[96, 1428, 357]
[96, 1752, 438]
[96, 2148, 537]

代码: 全选

def digit_set(n):
  assert isinstance(n, int)
  assert n > 0
  result = set()
  while n > 0:
    result.add(n % 10)
    n = n // 10
  return result

# check for m, n, p = 1, 5, 3
for i in range(1, 10):
  print(f"checking for i={i}")
  a = digit_set(i)
  for j in range(12345, 98765 + 1):
    b = digit_set(j)
    if 0 in b or len(b) != 5:
      continue
    for k in range(123, 987 + 1):
      c = digit_set(k)
      if 0 in c or len(c) != 3:
        continue
      aa = a.copy()
      bb = b.copy()
      cc = c.copy()
      aa.update(bb)
      aa.update(cc)
      if len(aa) == 9 and j % k == 0 and i + j // k == 100:
        print(f"i={i}, j = {j}, k = {k}")


# check for m, n, p = 2, 4, 3
for i in range(12, 98 + 1):
  print(f"checking for i={i}")
  a = digit_set(i)
  if 0 in a or len(a) != 2:
    continue
  for j in range(1234, 9876 + 1):
    b = digit_set(j)
    if 0 in b or len(b) != 4:
      continue
    for k in range(123, 987 + 1):
      c = digit_set(k)
      if 0 in c or len(c) != 3:
        continue
      aa = a.copy()
      bb = b.copy()
      cc = c.copy()
      aa.update(bb)
      aa.update(cc)
      if len(aa) == 9 and j % k == 0 and i + j // k == 100:
        print(f"i={i}, j = {j}, k = {k}")
              
上次由 (ヅ) 在 2023年 1月 28日 17:25 修改。
头像
verdelite楼主
论坛元老
论坛元老
帖子互动: 1039
帖子: 24248
注册时间: 2022年 7月 21日 23:33

Re: 用1-9一共9个数字,把100写成分数形式

帖子 verdelite楼主 »

(ヅ) 写了: 2023年 1月 28日 16:04 3(69258/714)
[3, 69258, 714]
[81, 5643, 297]
[81, 7524, 396]
[82, 3546, 197]
[91, 5742, 638]
[91, 5823, 647]
[91, 7524, 836]
[94, 1578, 263]
[96, 1428, 357]
[96, 1752, 438]
[96, 2148, 537]
若编程解决的,Code可以share一下
头像
(ヅ)
论坛支柱
论坛支柱
帖子互动: 549
帖子: 11819
注册时间: 2022年 8月 21日 14:20

Re: 用1-9一共9个数字,把100写成分数形式

帖子 (ヅ) »

verdelite 写了: 2023年 1月 28日 16:50 若编程解决的,Code可以share一下
简单分析可以得出只能是(1,5,3)和(2,4,3)这两种configurations

贴上了,暴力查找的,效率很烂

正常做应该是dfs
回复

回到 “STEM”