【华为OJ】【算法总篇章】 【华为OJ】【049-尼科彻斯定理】 【工程下载】 题目描述
验证尼科彻斯定理,即:任何一个整数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);
* 输入参数:
*int m:整数(取值范围:1~100)
*
* 返回值:
*m个连续奇数(格式:“7+9+11”);
*/
public String GetSequeOddNum(int m) {
/*在这里实现功能*/
return null;
}
输入描述
输入一个int整数
输出描述
输出分解后的string
输入例子
6
输出例子
31+33+35+37+39+41
算法实现
import java.util.Scanner;
/**
* Author: 王俊超
* Date: 2015-12-25 09:04
* Declaration: All Rights Reserved !!!
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
while (scanner.hasNext()) {
int n = scanner.nextInt();
System.out.println(getSequeOddNum(n));
}scanner.close();
}/**
* n个连续奇数之和
* 简单说明:
* 如果n是奇数,则从n^2-(n-1),n^2-(n-3)...n^2-(2),n^2-(0),n^2+(2)...n^2+(n-3),n^2+(n-1) 一共有n个数,和为n^3
* 如果n是偶数,则从n^2-(n-1),n^2-(n-3)...n^2-(1),n^2+(1)...n^2+(n-3),n^2+(n-1) 一共有n个数,和为n^3
*
* @param n
* @return
*/
private static String getSequeOddNum(int n) {int lo = n * n - (n - 1);
int hi = n * n + (n - 1);
StringBuilder builder = new StringBuilder();
for (int i = lo;
i <= hi;
i += 2) {
builder.append(i).append('+');
}return builder.substring(0, builder.length() - 1);
}
}