认证高级PHP讲师
暴力解決;整數比浮點數好用一萬倍
for p in range(1,100): for q in range(p,100): for r in range(q,100): for s in range(r,100): if p * q * r + p * q * s + p * r * s + q * r * s == p * q * r * s: print(p,q,r,s)
暴力,演算法上應該是只能暴力的。 但是暴力的方法是有蠻多種的。
兩邊同乘(pqrs)之後,得到$$ qrs+prs+pqs+pqr=pqrs $$之後,可以暴力其中的三個,計算出第四個。
把上面的式子整理,得到$$ ps(q+r)+qr(p+s)=pqrs $$ $$ qr(p+s)=ps[qr-(q+r)] $$ $$ frac{p+s}{ps}=frac{qr-(q+r)}{qr} $$
這樣只要暴力其中的兩個,並且在暴力的過程中把結果記下來,每次查表看一下這次算出來的值以前有沒有出現過就可以了。
只求一個解的話那就 p=q=r=s=4 就好啦!
p=q=r=s=4
我回答過的問題: Python-QA
我也是暴力解決的思路,不過我有個新發現。
1/p+1/q+1/r+1/s=1且p=1,則p
應該是,每確定一個等式右邊的x(x=1),就能確定一個p的最大值和最小值。 每確定一個p(循環時),都能確定一個q的最大值和最小值。 同理r和s。
然而4、6、12、42這個規律我還沒能用公式表達出來,應該是有什麼公式算法的,可以適用於1/p+1/q+1/r+1/s+1/. ..=x。
暴力解決;
整數比浮點數好用一萬倍
暴力,演算法上應該是只能暴力的。
但是暴力的方法是有蠻多種的。
兩邊同乘(pqrs)之後,得到$$ qrs+prs+pqs+pqr=pqrs $$之後,可以暴力其中的三個,計算出第四個。
把上面的式子整理,得到$$ ps(q+r)+qr(p+s)=pqrs $$ $$ qr(p+s)=ps[qr-(q+r)] $$
$$ frac{p+s}{ps}=frac{qr-(q+r)}{qr} $$
這樣只要暴力其中的兩個,並且在暴力的過程中把結果記下來,每次查表看一下這次算出來的值以前有沒有出現過就可以了。
只求一個解的話那就
p=q=r=s=4
就好啦!我回答過的問題: Python-QA
我也是暴力解決的思路,不過我有個新發現。
1/p+1/q+1/r+1/s=1且p=1,則p
應該是,每確定一個等式右邊的x(x=1),就能確定一個p的最大值和最小值。
每確定一個p(循環時),都能確定一個q的最大值和最小值。
同理r和s。
然而4、6、12、42這個規律我還沒能用公式表達出來,應該是有什麼公式算法的,可以適用於1/p+1/q+1/r+1/s+1/. ..=x。