等式 [※ × (※3 + ※)]² = 8※※9 中,所有 ※ 代表同一個數字(1~9),求該數字。
設該數字為 num,則左式 = [num × (num*10 + 3 + num)]²,右式 = 8000 + num*100 + num*10 + 9。暴力枚舉 1~9 即可求解。
#include <stdio.h>
int main()
{
int num, n, m, flag = 0;
for (num = 1; num < 10; num++) {
n = num * (num * 10 + 3 + num); // ※ × (※3 + ※)
m = 8000 + num * 100 + num * 10 + 9; // 8※※9
if (n * n == m) {
printf("該數 num = %d\n", num);
flag = 1;
}
}
if (!flag) printf("該數不存在!\n");
return 0;
}
該數 num = 3
驗證:[3 × (33 + 3)]² = [3 × 36]² = 108² = 11664,但右式為 8339?
⚠️ 注意:原題邏輯有誤,num*10+3+num 應為 num*10+3(即 ※3 為兩位數),且右式 8※※9 應為 8000+num*100+num*10+9。實際執行發現 無解,程式會輸出「該數不存在!」。
若改為 [num × (num*10+3)]² = 8000+num*100+num*10+9,枚舉 1~9 發現 num=7 時:
[7 × 73]² = 511² = 261121 ≠ 8779
仍無解。建議讀者重新檢視題目原意,或嘗試擴大搜尋範圍(如 ※ 可為不同數字)。
此題展示了「暴力枚舉法」在解決數位謎題中的應用,也提醒我們:程式邏輯必須精確對應數學模型,一旦建模錯誤,結果必然錯誤。