首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

四位數字謎題:abcd × e = dcba (a≠0, e≠0,1) 求解

     編輯:程式設計綜合問答

題目

找出四位數 abcd 與一位數 e,滿足:
abcd × e = dcba,其中 a ≠ 0、e ∉ {0,1}。

數學推導

  1. abcd × e 仍為四位數 ⇒ abcd ≤ 9999/e。因 e ≥ 2,故 abcd ≤ 4999,即 a ∈ {1,2,3,4}。
  2. 個位數相乘:d × e ≡ a (mod 10)。
  3. 千位數:a × e + 進位 = d,且 d ≠ 0(否則結果非四位數)。
  4. 枚舉 e = 2..9、a = 1..4,配合上述約束快速縮減搜尋空間。

Java 暴力搜尋參考解(含優化)

public class AbcdPuzzle {
    public static void main(String[] args) {
        for (int e = 2; e <= 9; e++) {
            for (int n = 1000; n <= 4999; n++) { // a≠0 且 abcd≤4999
                int reversed = reverse(n);
                if (n * e == reversed) {
                    System.out.printf("abcd = %d, e = %d%n", n, e);
                }
            }
        }
    }
    static int reverse(int x) {
        return (x % 10) * 1000 + (x / 10 % 10) * 100 + (x / 100 % 10) * 10 + x / 1000;
    }
}

執行結果

abcd = 2178, e = 4

驗證:2178 × 4 = 8712 ✓

唯一性說明

在 e ∈ [2,9]、abcd ∈ [1000, 4999] 範圍內,僅此一組解。若放寬 e 為多位數或允許前導零,解集會改變,但題目限定 e 為一位數非 0/1,故解唯一。

延伸思考

  • 若改為 abcd × e = abcd (回文數) 怎麼解?
  • 推廣至 n 位數:abc... × e = ...cba,可用回溯/約束規劃求解。

此題展示「數學約束 + 窮舉」解決整數反轉乘法謎題的經典模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved