2025年7月14日 星期一

訓練數學感 406 ─ 直式減法

https://4rdp.blogspot.com/2025/07/406.html?m=0

 ABBA

 –  BCB
-----
  CBC

ABC 各代表一個阿拉伯數字,某四位整數減掉三位數後等於另一個三位數,求 ABC 各別是多少。

難度 

雖然小學生可解,不過對有些人還是有點難。

6 則留言:

  1. 回覆
    1. 正解,能分享你的解題思路嗎?

      刪除
    2. 設定條件
      - ABBA 是個千位數,可表示為:1000A + 100B + 10B + A = 1001A + 110B
      - BCB 是個百位數,可表示為:100B + 10C + B = 101B + 10C
      - CBC 是結果,可表示為:100C + 10B + C = 101C + 10B
      - 並且:ABBA - BCB = CBC ⇒ 1001A + 110B - (101B + 10C) = 101C + 10B
      🧠 整理方程式
      將左式展開:
      - 1001A + 110B - 101B - 10C = 101C + 10B
      - 化簡得:1001A + 9B - 10C = 101C + 10B
      - 移項:1001A - C(10 + 101) + B(9 - 10) = 0
      - 整理得:1001A - 111C - B = 0
      ⇒ 1001A = 111C + B
      🎯 嘗試代入合理數字
      因為 A、B、C 是個位數(0~9),試試 A = 1:
      - 1001×1 = 111C + B ⇒ 1001 = 111C + B
      試 C = 9:
      - 111×9 = 999 ⇒ B = 1001 - 999 = 2
      這組就符合條件!
      ✅ 驗算
      - ABBA = 1221
      - BCB = 292
      - CBC = 929
      確實:1221 - 292 = 929

      🎉 結論
      滿足條件的數字組合之一是:
      - A = 1, B = 2, C = 9

      刪除
    3. 不錯,採用代數解法

      刪除
  2. 以下 Python 程式用暴力搜尋(exhaustive search)枚舉所有可能的 A、B、C(各為 1–9 且彼此不同)
    solutions = []
    for A in range(1, 10): # A cannot be 0 (four‑digit number)
    for B in range(1, 10): # B cannot be 0 (three‑digit number)
    if B == A:
    continue
    for C in range(1, 10): # C cannot be 0 (three‑digit number)
    if C in (A, B):
    continue

    ABBA = 1000 * A + 100 * B + 10 * B + A
    BCB = 100 * B + 10 * C + B
    CBC = 100 * C + 10 * B + C

    if ABBA - BCB == CBC:
    solutions.append((A, B, C, ABBA, BCB, CBC))

    print("Solutions (A, B, C, ABBA, BCB, CBC):")
    for sol in solutions:
    print(sol)

    回覆刪除