【JavaScript——牛客网算法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:
    输入说明
    输入一个int整数
  • @output description:
    输出分解后的string

  • 示例
  • @input:
    6
  • @output:
    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
之后分析其中的数学规律:我们可以先找到结果数列的中间值:底数的平方。
这个中间值会存在奇偶两种情况:
① 底数的平方(one)为奇数:
直接先把one的值加入结果数组(arr)中,之后再循环(n-1)/2次,每次循环都在数组中加上已有奇数列最近的前一项和后一项;
以5为例:
one = Math.pow(5,2)
// 25
arr = [25];
arr = [23,25,27];
arr = [21,23,25,27,29];
② 底数的平方(one)为偶数:
直接循环n/2次,每次循环也是在数组中加上已有奇数列最近的前一项和后一项;


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值