题解 | #尼科彻斯定理#规律很有意思,简单

尼科彻斯定理

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int m = in.nextInt();
            printRes(m);
        }
    }
    public static void printRes(int m) {
        //发现规律,1,就是1自己;2就是2的平方的左右两个数;3就是3的平方及其左右两个数;4就是4的平方左右四个数
        //5就是5的平方及其左右五个数,6就是6的平方左右6个数。
        //循环控制m个奇数
        int x = m / 2;//x是最左端到中间的距离
        if (m % 2 == 1) {//奇数情况,不需要调整一个位移
            for (int i = 0; i < m; i++) {//m控制个数,因此x不需要限制
                if(i==m-1){//不但把i=1处理了,还处理了后面的+
                    System.out.print(m * m - (2 * x));
                }else {
                    System.out.print(m * m - (2 * x) + "+");//2是两个奇数之间的步长
                }
                x--;//x代表结果奇数的位置
            }
            System.out.println();
        } else {//偶数情况需要调整一个位移
            for (int i = 0; i < m; i++) {//m控制个数,因此x不需要限制
                if(i==m-1){//最后一个数后面不再需要+了
                    System.out.print(m * m + 1 - (2 * x) );
                }else {
                    System.out.print(m * m + 1 - (2 * x) + "+");//2是两个奇数之间的步长(偶数时,需要加一才能是奇数)
                }
                x--;//
            }
            System.out.println();
        }
    }
}

首先可以看出规律的。然后要分奇数和偶数的情况。最后需要处理好步长与+符号

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务