题解 | #尼科彻斯定理#

尼科彻斯定理

https://www.nowcoder.com/practice/dbace3a5b3c4480e86ee3277f3fe1e85

一开始没有想到等差数列公式来解决,我这个算是最笨的方法。但应该非常好理解:
1.首先找规律,1 3 5 7 9 11 13 15 17 19 21 23 25 27 29,每个按 1,2 ,3 分开 得到 1,3 5, 7 9 11 ,13 15 17 19 ,21 23 25 27 29
2.根据输入数字的阶乘为数组长度,初始化 0为1,进行赋值
3.在输出数组中的按我们分类后的 数字对应的部分
package huawei.nowcoder;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

/**
 * 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
 * 例如:
 * 1^3=1
 * 2^3=3+5
 * 3^3=7+9+11
 * 4^3=13+15+17+19
 *
 * @author Az
 * @date 2022/9/7
 */
public class HJ76 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String n;
        if ((n = br.readLine()) != null) {
            int num = Integer.parseInt(n);
            int length = 0;
            while (num > 0) {
                length += num;
                num--;
            }
            int[] nums = new int[length];
            nums[0] = 1;

            int temp = 1;
            for (int i = 1; i < length; ++i) {
                nums[i] = temp + 2;
                temp = nums[i];
            }

            for (int i = nums.length - Integer.parseInt(n); i < nums.length; i++) {
                if (i != nums.length - 1) {
                    System.out.print(nums[i] + "+");
                } else {
                    System.out.print(nums[i]);
                }
            }
        }

    }
}


全部评论

相关推荐

11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务