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来实现多次复用并节省内存。最后记得把对象的数值清空,这一步也可以放在死循环的最开始。

京公网安备 11010502036488号