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