天蓬老师2017-04-18 09:29:36
暴力、アルゴリズム的には暴力のみであるべきです。
しかし、暴力を行使する方法はたくさんあります。
両辺 (pqrs) を乗算すると、$$ qrs+prs+pqs+pqr=pqrs $$ が得られます。そのうち 3 つをブルート フォースして 4 つ目を計算できます。
上記の式を整理すると、 $$ ps(q+r)+qr(p+s)=pqrs $$ $$ qr(p+s)=ps[qr-(q+r )] となります。 $$
$$ frac{p+s}{ps}=frac{qr-(q+r)}{qr} $$
この方法では、そのうちの 2 つを総当たりで実行するだけで済み、総当たり処理中の結果を書き留めて、今回計算された値が以前に出現したかどうかを毎回テーブルで確認します。
高洛峰2017-04-18 09:29:36
私も暴力的な解決策を考えますが、新たな発見がありました。
1/p+1/q+1/r+1/s=1 および p<=q<=r<=s、p=q=r=s、4 のときに p が最大であることがわかります。 /p>= 1、p<=4 の場合、ループ内の最大値が決定されます。for ループの最大値は 4 であり、4 より大きい値は考慮する必要はありません。同様に、q<=6、r<=12、s<=42 を推定でき、for ループの範囲を減らすことができます。
式の右辺のx(x=1)が決まるたびに、pの最大値と最小値が決まるはずです。
pが決まるたびに(ループ時)、qの最大値と最小値が決まります。
r と s についても同様です。
しかし、4、6、12、42 の法則を数式で表現することはできていません。1/p+1/q+1/r+ に適用できる数式アルゴリズムがあるはずです。 1/s+1 /...=x。