ブルーブリッジカップ Python 小学生向けブレークスルー | マッチ棒の方程式

人形からPythonを学ぼう!Blue Bridge Cup Python 学習およびテスト準備プロセスの質問を記録し、あらゆる瞬間を記録します。

概要投稿を添付してください:生徒ブルー ブリッジ カップ Python ブレイクスルー | 概要_ブルー ブリッジ カップ Python 小学校グループ_COCOgsta のブログ-CSDN ブログ



【説明】

n 個の一致があった場合、A+B=C という形式の方程式をいくつ説明できますか? 方程式の A、B、および C は、マッチ棒で綴られた整数です (数値が 0 以外の場合、最上位ビットは 0 にはなりません)。マッチ棒を使用した 0 ~ 9 の数字のスペルを次の図に示します。

知らせ:

  1. プラス記号と等号にはそれぞれ 2 本のマッチ棒が必要です。
  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