小学生蓝桥杯Python闯关 | 火柴棒等式

学习Python从娃娃抓起!记录下蓝桥杯Python学习和备考过程中的题目,记录每一个瞬间。

附上汇总贴:小学生蓝桥杯Python闯关 | 汇总_蓝桥杯python小学组_COCOgsta的博客-CSDN博客



【题目描述】

给你n根火柴,你可以拼出多少个形如A+B=C的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:

注意:

  1. 加号与等号各自需要两根火柴棍;
  2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A,B,C≥0);
  3. n根火柴棍必须全部用上。

【输入描述】

一个整数n(1≤n≤24)。

【输出描述】

一个整数,能拼成的不同等式的数目。

【样例输入】

14

【样例输出】

2

【代码详解】

n = int(input())

res = 0
arr = [0 for i in range(1001)]
nums = [6,2,5,5,4,5,6,3,7,6]
[nums.append(0) for i in range(1001)]


def dfs(x, sum):
    global res
    if sum > n: return

    if x > 3:
        if arr[1] + arr[2] == arr[3] and sum == n:
            # for i in range(1, 4):
            #     print(arr[i], end =' ')
            # print()
            res += 1
        return

    for i in range(0, 1001):
        arr[x] = i
        dfs(x+1, sum + nums[i])
        arr[x] = 0


n -= 4
for i in range(10, 1001):
    nums[i] = nums[i%10] + nums[i//10]
dfs(1, 0)
print(res)

【运行结果】

18
9

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/130722764
今日推荐