题解 | #尼科彻斯定理#

尼科彻斯定理

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

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int m =0;
        int a1=0;
        int an=0;
        StringBuffer strb = new StringBuffer();
        String output=null;
        while (in.hasNextInt()) {
            m=Integer.parseInt(in.nextLine());
            a1=m*m-(m-1);//求出a1
            an=a1;
            strb.append(a1);
            //System.out.println(a1);
            for (int i = 0; i < m-1; i++) {
                an+=2;
                strb.append("+").append(an);
            }
            System.out.println(strb);
            strb.delete(0,strb.length());//方便下次复用
        }
    }
}

先上代码。这个公式有个规律,m的3次方=m个连续奇数求和,右边是个公差=2的等差数列,显然右边=ma1+m(m-1)/2,两边同时除以整数m后可以求出a1,后续只需要追加“+”和可求得个数的an即可。笔者使用了StringBuffer来实现多次复用并节省内存。最后记得把对象的数值清空,这一步也可以放在死循环的最开始。

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务