题解 | #尼科彻斯定理#
尼科彻斯定理
https://www.nowcoder.com/practice/dbace3a5b3c4480e86ee3277f3fe1e85
m^3是m个连续奇数,其中第一个奇数是上一组结果(m-1)^3的最后一个奇数+2,
则可以得到在此之前正奇数有f(m)=1+2+3+...+(m-1)=m(m-1)/2
那么依次轮询f(m)个奇数之后,下一个奇数就是正确的答案的第一个奇数,继续轮询m-1次就得到所有
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); //m的立方是m个连续奇数之和 //每一组奇数的第一个是上一组奇数的最后一个奇数+2,是连续的奇数1 35 7911 ... int m = in.nextInt(); //判断该数之前已经使用了多少正奇数1+2+3+....+(n-1)=n(n-1)/2 int n = m * (m - 1) / 2; int count = 0;//记录轮询个数 for (int i = 1;; i += 2) { count++; if (count > n) {//当轮询个数>上一组最后一个奇数 就开始输出 System.out.print(i); if (--m>0)//需要输出m个数,m-1个+号 System.out.print("+"); else break; } } } }