学习Python从娃娃抓起!记录下蓝桥杯Python学习和备考过程中的题目,记录每一个瞬间。
附上汇总贴:小学生蓝桥杯Python闯关 | 汇总_蓝桥杯python小学组_COCOgsta的博客-CSDN博客
【题目描述】
给你n根火柴,你可以拼出多少个形如A+B=C的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:
注意:
- 加号与等号各自需要两根火柴棍;
- 如果A≠B,则A+B=C与B+A=C视为不同的等式(A,B,C≥0);
- 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