华为OJ之尼科彻斯定理
题目详情:验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
输入:一个整形数字
输出:分解后的string
示例输入:6
示例输出:31+33+35+37+39+41
题目分析:
本题实质上是一个数学定理,我们暂且来用数学知识来验证其正确性:
1, 对于任一正整数n > 0,不论n是奇数还是偶数,整数(n*n-n+1)必然为奇数。
2, 构造一个等差数列,其中首项为(a×a-a+1),差值为2,则前n项的和为:
a*((n*n-n+1))+2*n(n-1)/2 = n^3;
故定理成立。
则题目便转化为特定数字序列的输出问题了。
代码实现(Java实现):
import java.util.Scanner;
public class NichestPrinciple {
public static void main(String[] args) {
System.out.println(verifyNichest(getInput()));
}
public static int getInput() {
@SuppressWarnings("resource")
Scanner reader = new Scanner(System.in);
return reader.nextInt();
}
public static String verifyNichest(int n) {
StringBuffer sBuffer = new StringBuffer();
for (int i = 0; i < n; i ++) {
sBuffer.append(String.valueOf((n * n - n + 1 + 2 * i)));
if (i != n - 1) {
sBuffer.append("+");
}
}
return sBuffer.toString();
}
}
页:
[1]