ホームページ > 記事 > ウェブフロントエンド > JavaScript の楽しい質問: 家を建てる
Nの床を持つ家を建てる予定です。その設計図は次のとおりです:
一番下の階の体積はNの3乗で、最後から2番目の床の体積はです。 ( N-1) の 3 乗など、最上層の体積は 1 の 3 乗です。 ここで問題が発生します。さまざまな要因により、デザイナーは総量を
Mに制限することにしました。 この家を建てるのに
Mのサイズがちょうど良いという可能性はありますか? それ以上でもそれ以下でもありませんのでご了承ください。
できればレイヤー数
Nを返してください。
関数のプロトタイプは次のとおりです:
findNb (M)
戻り値は整数です。それができない場合は、
を返してください。
findNb(1071225) // --> 45层 findNb(91716553919377) // --> -1
総体積
Mを与えてから、最上層から始めて、Mになるまで各層の体積を順番に減算します。 が
0に等しい場合、つまり家を建てることができ、階数が返されます。 が負の数の場合、音量
Mが不適切であることを意味し、-1が返されます。
function findNb(m) { var nb = 1; while(m > 0){ m -= Math.pow(nb++,3); } return m == 0 ? nb - 1 : -1; }