题解 | #尼科彻斯定理#
尼科彻斯定理
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]); } } } } }