华为机试-尼科彻斯定理

题目描述
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19

接口说明
原型:

/*
功能: 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
原型:
int GetSequeOddNum(int m,char * pcSequeOddNum);
输入参数:
int m:整数(取值范围:1~100)

返回值:
m个连续奇数(格式:“7+9+11”);
*/
public String GetSequeOddNum(int m)
{
/*在这里实现功能*/
return null;
}


输入描述:
输入一个int整数
输出描述:
输出分解后的string
示例1
输入

6
输出

31+33+35+37+39+41

程序实现:

  1. import java.util.HashSet;  
  2. import java.util.Scanner;  
  3.   
  4. /** 
  5.  * 题目描述 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。 例如: 1^3=1 2^3=3+5 3^3=7+9+11 
  6.  * 4^3=13+15+17+19 
  7.  *  
  8.  */  
  9.   
  10. public class Main {  
  11.     public static void main(String[] args) {  
  12.         @SuppressWarnings("resource")  
  13.         Scanner scanner = new Scanner(System.in);  
  14.         while (scanner.hasNext()) {  
  15.             int num = scanner.nextInt();  
  16.             String s = GetSequeOddNum(num);  
  17.             System.out.println(s);  
  18.         }  
  19.   
  20.     }  
  21.   
  22.     private static String GetSequeOddNum(int num) {  
  23.         HashSet<Integer> set = new HashSet<>();  
  24.         long sum = (long) Math.pow(num, 3);  
  25.         long mid = sum / num;  
  26.         long sum1 = 0;  
  27.         long start = 0;  
  28.         StringBuilder stringBuilder = new StringBuilder();  
  29.         if (num % 2 == 0) {  
  30.             // 偶数  
  31.             start = mid - 1 - (num - 2);  
  32.   
  33.         } else {  
  34.             // 奇数  
  35.             start = mid - (num - 1);  
  36.   
  37.         }  
  38.         sum1 += start;  
  39.         stringBuilder.append(start);  
  40.         for (int i = 2; i <= num; i++) {  
  41.             start += 2;  
  42.             sum1 += start;  
  43.             stringBuilder.append("+" + start);  
  44.   
  45.         }  
  46.         if (sum1 == sum) {  
  47.             return stringBuilder.toString();  
  48.         } else {  
  49.             return null;  
  50.         }  
  51.   
  52.     }  
  53. }