You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数字拆分算法求助:寻找左右乘积相等的最小拆分点

解决方案

算法逻辑

要找到最小的拆分点,核心是从左到右遍历所有可能的拆分位置,逐个验证左右两侧数字的乘积是否相等,第一个满足条件的位置就是最小拆分点:

  1. 先判断数字长度是否小于2,若是直接返回-1(无法拆分)。
  2. 遍历拆分点k,范围是1到len(res)-1(k表示左侧包含前k个数字,右侧包含剩余数字)。
  3. 对每个k,分别计算左侧和右侧数字的乘积。
  4. 若左右乘积相等,立即返回当前k(从左到右遍历,第一个符合条件的就是最小拆分点)。
  5. 遍历完所有拆分点都未找到符合条件的,返回-1。

完整代码实现

a = int(input("enter a number="))
res = [int(x) for x in str(a)]
n = len(res)

# 数字长度不足2,无法拆分
if n < 2:
    print(-1)
else:
    found = False
    # 从最小的拆分点开始遍历
    for k in range(1, n):
        # 计算左侧乘积
        left_product = 1
        for num in res[:k]:
            left_product *= num
        # 计算右侧乘积
        right_product = 1
        for num in res[k:]:
            right_product *= num
        # 验证乘积是否相等
        if left_product == right_product:
            print(k)
            found = True
            break
    # 未找到有效拆分点
    if not found:
        print(-1)

代码优化(可选)

上面的代码直观但存在重复遍历,可通过总乘积优化计算效率(需处理总乘积为0的特殊情况):

a = int(input("enter a number="))
res = [int(x) for x in str(a)]
n = len(res)

if n < 2:
    print(-1)
else:
    # 计算总乘积,同时标记是否包含0
    total_product = 1
    has_zero = False
    for num in res:
        if num == 0:
            has_zero = True
        total_product *= num
    
    left_product = 1
    found = False
    for k in range(1, n):
        left_product *= res[k-1]
        # 总乘积为0时,需左右都包含0才满足条件
        if total_product == 0:
            right_has_zero = any(num == 0 for num in res[k:])
            if left_product == 0 and right_has_zero:
                print(k)
                found = True
                break
        # 总乘积非0时,右侧乘积=总乘积/左侧乘积
        else:
            right_product = total_product // left_product
            if left_product == right_product:
                print(k)
                found = True
                break
    if not found:
        print(-1)

测试示例

  • 输入142811:遍历到k=3时,左侧乘积1*4*2=8,右侧乘积8*1*1=8,返回3。
  • 输入301501:遍历到k=2时,左侧乘积3*0=0,右侧乘积1*5*0*1=0,返回2。

内容的提问来源于stack exchange,提问作者helping hand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:01:13