私はこのアルゴリズムを解決するのに本当に苦労しています。ネストされたループを実行する必要があることはわかっていますが、
それを解決する方法を回避することはできません。
基本的に、j^a、k^b、l^c、m^d があり、a、b、c、および d のそれぞれは、17 のいずれかです。
数値 {-5、-4、-3、-2、-1、-1/2、-1/3、-1/4、0 または同じ数値で正の数}。
ここで、ユーザーに近似値 (u としましょう) を尋ねてから、彼に尋ねます。
4 桁の場合。を満たすこれらの数の組み合わせを見つける必要があります。
方程式: j^a*k^b*l^c*m^d ここで、u の 0.01 以内です。例えば誰かが選んだ
近似値として 238900 を選択し、4 つの値として 14,102329,1936,13 を選択し、次にプログラム
すべての組み合わせ (ie14^-5*102329^-5*..etc) をチェックして、最も近いものを見つけます。
値は 1% 以内で 238900 になります。答えは 14^-5*102329^1*1936^1/2*13^4 です。
あなたは約239103です(uの値の1%以内に実際に近づくことができない場合があります)。
ネストされたループを配置するのに苦労しているだけなので、考えられるすべての組み合わせをチェックします
一度に1つずつチェックするのではなく、同時に。変数が
(a,b,c,d,j,k,l,m) は double として宣言され、q は int として宣言されます。
double [] numbers = {-5.0, -4.0, -3.0, -2.0, -1.0, -1.0/2.0, -1.0/3.0, -1.0/4.0, 0.0, 1.0/4.0, 1.0/3.0, 1.0/2.0, 1.0, 2.0, 3.0, 4.0, 5.0}
while(j - u < k){
while(k - u < l){
while(l - u < m){
while(m < u * 0.01){
Math.pow(m,numbers[q];
q++;
}
int i = 0;
if(i == 0){
q = 0;
i++;
}
Math.pow(l,numbers[q]);
q++;
}
int y = 0;
if(y == 0){
q = 0;
y++;
}
Math.pow(k,numbers[q]);
q++;
}
int r = 0;
if (r == 0){
q = 0;
r++
}
Math.pow(j,numbers[q]);
q++;
}