为了账号安全,请及时绑定邮箱和手机立即绑定

如何将数字分成三个连续的部分,使第三部分是另外两个的总和?

如何将数字分成三个连续的部分,使第三部分是另外两个的总和?

慕桂英546537 2021-08-14 15:46:38
我正在尝试编写一个 python 程序来确定一个数字的数字是否可以分成三个连续的部分,这样第三部分是另外两个的总和。例如,9999198 可以被整除,因为 99 + 99 = 198。总和将始终是最低有效数字。我无法提供方法请帮助。我正在尝试将其实现为将数字视为单个数字,如上述情况下的 7。然后尝试创建三个数字的所有子集,这些数字相加为 7,然后使用这些子集找到正确的数字。就像 7 = 2,2,3 所以我的答案是 99,99,198。我的问题是我们如何有效地将这些数字分成 3 个数字的子集。
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

这是我的解决方案,它检查将给定数字分成 3 部分的所有可能组合,并检查前两个分量的总和是否等于第三个分量。


def correct_number(x):

    str_nmbr = str(x)

    for result_split in range(len(str_nmbr)-2):

        part_3 = int(str_nmbr[-result_split-1:])


        for components_split in range(len(str_nmbr)-2-result_split):

            part_2 = int(str_nmbr[1+components_split: -result_split-1])

            part_1 = int(str_nmbr[:components_split+1])


            if part_1 + part_2 == part_3:

                return True


    return False


print(correct_number(9999198)) # True

正如作者所要求的,这里给出了如何确定数字部分的视觉解释,给定数字“1234567”

1 2 3 4 5 6 7:

  • 第一个循环选择第二个分隔符

  • 1 2 3 4 5 6|7

  • 第二个循环选择第一个

  • 1 2|3 4 5 6|7

  • 1 2 3|4 5 6|7

  • 1 2 3 4|5 6|7

  • 1 2 3 4 5|6|7

  • . . . 然后我们将第二个第二个分隔符向后移动 1 步

  • 1 2 3 4 5|6 7

  • 我们继续移动第一个分隔符

  • 1|2 3 4 5|6 7

  • 1 2|3 4 5|6 7

  • 1 2 3|4 5|6 7

  • . . .


查看完整回答
反对 回复 2021-08-14
  • 1 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信