题解 | #尼科彻斯定理#规律很有意思,简单
尼科彻斯定理
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(); } } }
首先可以看出规律的。然后要分奇数和偶数的情况。最后需要处理好步长与+符号