プロニック数は方形数とも呼ばれ、連続する 2 つの数値の倍数です。整数の配列を取得し、数値を任意の方向に一定回数回転して、すべての組み合わせを取得できます。数値をローテーションすることによって生成される組み合わせについて、各配列要素を Plonik 数値に変換できる場合は true を出力し、それ以外の場合は false を出力します。
まず、陽子数について説明します。陽子数は、2 つの連続する数値の積です。
数学的には、次の連続する番号が x 1 である整数 x があり、数値 k をそれらの両方の積とする場合、これは、k = (x)*(x 1) を意味します。 Pronic 番号の例は次のとおりです。
0 は 0 と 1 の積です。
1 は 1 と 2 の積です。
6 は 2 と 3 の積です。
-> 12、20、30、42、56、72、90、110、132、156、182、210、240、272など
###例###{21、65、227、204、2}
出力: はい
イラスト:
0 番目のインデックス: 21 の場合、1 回転すると 3 と 4 の積である 12 に変換できるため、これはプランク数になります。
最初のインデックス: 65 については、1 回転後に 56 に変換できます。これは 7 と 8 の積であり、したがって Plonic 数になります。
2 番目のインデックス: 227 は、1 回転後に 272 に変換できます。これはプロニック数です。
同様に、204 ~ 420 と 2 自体は陽子数です。
###方法###コードサンプルを見てきました。次は手順に進みましょう -
まず、指定された数値を回転する関数を定義します。整数が引数として渡され、文字列に変換されます。
部分文字列メソッドを使用して、文字列を右に回転し、それを数値に再度変換して戻します。
現在の数値が pronic かどうかを確認する pronic 関数を定義します。
現在の数値の平方根の下限を見つけて、それに連続する数値を乗算して、現在の数値が陽子であるかどうかを判断します。
現在の数値を文字列に変換して桁数を求める関数を定義します。
main 関数では、配列を反復処理し、要素ごとに長さによって、または Pronic 番号が見つかるまで回転させます。
すべての反復の後で、代数ではない数値が見つかり、それを代数に変換できない場合は、「yes」は出力されません。
次の例では、数値をローテートすることによって、すべての配列要素を Plonik 数値に変換できるかどうかを確認します。入力と予想される出力を以下に示します。
時間と空間の複雑さ
上記のコードの時間計算量は O(N) です。ここで、N は配列のサイズです。ここでは、配列をループして平方根を求めるための追加の数値サイズの対数係数を取得しますが、指定された整数の最大長は非常に小さいため、線形時間計算量には影響しません。
ここでは余分なスペースを使用していないため、上記のコードのスペース複雑さは定数または O(1) です。
###結論は###以上がJavaScript プログラムは、数値をローテーションすることによってすべての配列要素をプロニック数に変換できるかどうかをチェックしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。