人形からPythonを学ぼう!Blue Bridge Cup Python 学習およびテスト準備プロセスの質問を記録し、あらゆる瞬間を記録します。
概要投稿を添付してください:生徒ブルー ブリッジ カップ Python ブレイクスルー | 概要_ブルー ブリッジ カップ Python 小学校グループ_COCOgsta のブログ-CSDN ブログ
【説明】
n 個の一致があった場合、A+B=C という形式の方程式をいくつ説明できますか? 方程式の A、B、および C は、マッチ棒で綴られた整数です (数値が 0 以外の場合、最上位ビットは 0 にはなりません)。マッチ棒を使用した 0 ~ 9 の数字のスペルを次の図に示します。
知らせ:
- プラス記号と等号にはそれぞれ 2 本のマッチ棒が必要です。
- 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