[JavaScript——Niuke.com Algorithm No.HJ76]ニコッシュの定理を検証します。つまり、整数mの任意の立方体は、m個の連続する奇数の合計として記述できます。

  • @ No.HJ76ニコッシュの定理を検証します。つまり、整数mの任意の立方体は、m個の連続する奇数の合計として記述できます。

  • @problem description:
    ニコッシュの定理を確認します。つまり、整数mの任意の立方体は、m個の連続する奇数の合計として記述できます。例:
    1 ^ 3 = 1
    2 ^ 3 = 3 + 5
    3 ^ 3 = 7 + 9 + 11
    4 ^ 3 = 13 + 15 + 17 + 19
  • @input description:
    入力description
    input int integer
  • @output description:
    分解された文字列を出力します

  • @input:
    6
  • @出力:
    31 + 33 + 35 + 37 + 39 + 41
while(n = readline()){
    
    
    var arr = [];
    let one = Math.pow(n,2);
    if(one % 2 != 0){
    
    
        arr.push(one);
        for(var i=1;i<=(n-1)/2;i++){
    
    
            arr.push(one + i * 2)
            arr.unshift(one - i * 2)
        }
    }else{
    
    
        for(var i=0;i< n/2;i++){
    
    
            arr.push(one + 1 + i * 2)
            arr.unshift(one - 1 - i * 2)
        }
    }
    console.log(arr.join("+"));
}
アルゴリズムの分析:

古典的な数学の問題:
数学的指数演算法が使用されます:Math.pow(底数,指数)例:Math.pow(3,2)= 9
数学的法則を分析した後、最初に結果系列の中間値である底辺の​​2乗を見つけることができます。
この中間値には
、奇数と偶数の2つのケースがあります。①底辺(1)の2乗が奇数
です。1の値を結果の配列(arr)に直接追加してから(n-1)/2、既存の配列を配列に追加するたびに再度ループします。奇数列の最新の前の項目と次の項目。
例として5を取り上げます
。one= Math.pow(5,2)
// 25
arr = [25];
arr = [23,25,27];
arr = [21 、23,25,27,29];
②底辺(1)の2乗は偶数です。
直接ループしn/2、各ループは最も近い前のアイテムと次のアイテムを奇数列の配列に追加します。


Code_Zevin_J-2020-08-25 21:01:13

おすすめ

転載: blog.csdn.net/JZevin/article/details/108228903