python - 求这样的4个自然数p、q、r、s(p<=q<=r<=s),使得一下等式成立:1/p+1/q+1/r+1/s=1。
PHP中文网
PHP中文网 2017-04-18 09:27:36
0
4
1222
PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(4)
刘奇

暴力的な解決策;
整数は浮動小数点数よりも 10,000 倍使いやすいです

リーリー
いいねを押す +0
Peter_Zhu

暴力、アルゴリズム的には暴力のみであるべきです。
しかし、暴力を行使する方法はたくさんあります。

  1. 両辺 (pqrs) を乗算すると、$$ qrs+prs+pqs+pqr=pqrs $$ が得られます。そのうち 3 つをブルート フォースして 4 つ目を計算できます。

  2. 上記の式を整理すると、 $$ ps(q+r)+qr(p+s)=pqrs $$ $$ qr(p+s)=ps[qr-(q+r )] となります。 $$
    $$ frac{p+s}{ps}=frac{qr-(q+r)}{qr} $$

この方法では、そのうちの 2 つを総当たりで実行するだけで済み、総当たり処理中の結果を書き留めて、今回計算された値が以前に出現したかどうかを毎回テーブルで確認します。

いいねを押す +0
左手右手慢动作

解決策が 1 つだけ必要な場合は、p=q=r=s=4 で問題ありません!


私が回答した質問: Python-QA

いいねを押す +0
小葫芦

私も暴力的な解決策を考えますが、新たな発見がありました。

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。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート