专业编程基础技术教程

网站首页 > 基础教程 正文

数列的四则运算(数列的四则运算都必须是有限项吗)

ccvgpt 2024-11-16 17:25:54 基础教程 8 ℃

大家小时候可能也玩过“组合车牌号里的 4 个数字最终得到 10”的游戏。

组合的方法是在各个数字之间插入四则运算的运算符组成算式,然后计算算式的结果(某些数位之间可以没有运算符,但最少要插入 1 个运算符)。

数列的四则运算(数列的四则运算都必须是有限项吗)

例)

1234 → 1 + 2×3 - 4 = 3

9876 → 9×87 + 6 = 789

假设这里的条件是,组合算式的计算结果为“将原数字各个数位上的数逆序排列得到的数”,并且算式的运算按照四则运算的顺序进行(先乘除,后加减)。

那么位于 100~999,符合条件的有以下几种情况。

351-→-3×51 = 153

621-→-6×21 = 126

886-→-8×86 = 688

问题

求位于 1000~9999,满足上述条件的数。


python解答:

ops = ["+", "-", "*", "/", ""]
import re
# 定义一个函数,使用正则表达式去除数字前的前导零
def remove_leading_zeros_from_numbers(s):
    def remove_leading_zeros_in_match(match):
        number = match.group(0)
        return str(int(number))
    return re.sub(r'\d+', remove_leading_zeros_in_match, s)


for i in range(1000, 10000):
    c = str(i)
    for j in range(len(ops)):
        for k in range(len(ops)):
            for l in range(len(ops)):
                val = c[3] + ops[j] + c[2] + ops[k] + c[1] + ops[l] + c[0]
                if len(val) > 4:
                    # 一定要插入1个运算符
                    # Python中eval函数可以计算字符串表达式的值
                    try:
                        vals = remove_leading_zeros_from_numbers(val)

                        if i == eval(vals):
                            print(vals + " = " + str(i))
                    except ZeroDivisionError:
                        # 捕获除以零的错误
                        pass

最近发表
标签列表