题解 | #尼科彻斯定理#

尼科彻斯定理

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;
            }
        }
    }
}

全部评论

相关推荐

吴offer选手:学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞 评论 收藏
分享
03-11 10:06
已编辑
河南师范大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务