题目描述 验证尼科彻斯定理,即:任何一个正整数的立方都可以写成一串连续奇数的和。
输入
任一正整数。
输出 该数的立方分解为一串连续奇数的和 样例输入 Copy
13 样例输出 Copy
131313=2197=157+159+161+163+165+167+169+171+173+175+177+179+181
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); while(scan.hasNext()){ int n=scan.nextInt(); int a=n*n*n; if(a==1) System.out.println("1*1*1=1=1"); else{ int[] arr=new int[a]; System.out.print(n+"*"+n+"*"+n+"="+a+"="); int count=0; int w=0; for(int i=n*n+1-n;count<n-1;i+=2,count++){ arr[count]=i; System.out.print(arr[count]+"+"); w=arr[count]; System.out.print(w+2); System.out.println(); } } } }以上方法虽然样例通过了,但是输出的方式不是很好,时间花费在了输出格式上 然后有一种优化解(来自dalao)可以康康
import java.util.Scanner; public class Main { public static void main(String[]args){ Scanner scan=new Scanner(System.in); while(scan.hasNext()){ int n=scan.nextInt(); System.out.print(n+"*"+n+"*"+n+"="+n*n*n+"="); int[] a=new int[n]; if(n%2==0){ int i; for(i=0;i<n;i++) { int z=n*n; a[0]=(z+1)-(n/2)*2; a[i]=a[0]+i*2; if(i<a.length-1) System.out.print(a[i]+"+"); if(i==a.length-1) System.out.print(a[i]); } } if(n%2!=0){ int i; for(i=0;i<n;i++) { int z=n*n; a[0]=z-((n-1)/2)*2; a[i]=a[0]+i*2; if(i<a.length-1) System.out.print(a[i]+"+"); if(i==a.length-1) System.out.print(a[i]); } } } System.out.println(); } }注意最后一行单独输出一空行的输出格式,不然判题机会答案错误555…