早教吧 育儿知识 作业答案 考试题库 百科 知识分享

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

题目详情
public final class Demo {
/*
功能:验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和.
原型:
int GetSequeOddNum(int m,char * pcSequeOddNum);
输入参数:
int m:整数(取值范围:100)
返回值:
m个连续奇数(格式:“7+9+11”)
*/
public String GetSequeOddNum(int m)
{
/*在这里实现功能*/
return null;
}
}
▼优质解答
答案和解析
package test;

import java.util.ArrayList;
import java.util.List;

public class Nikechesi {

\x05public static void main(String[] args) {
\x05\x05System.out.println(GetSequeOddNum(3));
\x05}

\x05public static String GetSequeOddNum(int m) {
\x05\x05int sum = m * m * m;
\x05\x05List list = new ArrayList();
\x05\x05for (int i = 1;; i += 2) {
\x05\x05\x05sum = m*m*m;
\x05\x05\x05list = new ArrayList();
\x05\x05\x05for (int j = i;; j += 2) {
\x05\x05\x05\x05sum -= j;
\x05\x05\x05\x05list.add(j);
\x05\x05\x05\x05if (sum <= 0) {
\x05\x05\x05\x05\x05break;
\x05\x05\x05\x05}
\x05\x05\x05}
\x05\x05\x05if (sum == 0) {
\x05\x05\x05\x05break;
\x05\x05\x05} else {
\x05\x05\x05\x05continue;
\x05\x05\x05}
\x05\x05}
\x05\x05String s = "";
\x05\x05for(Integer i:list){
\x05\x05\x05s += "+" + i ;
\x05\x05}
\x05\x05
\x05\x05return s.substring(1);
\x05}
}
 你给定了m的取值范围,所以这段代码中没有考虑负数和0,不过也不难.0的话直接返回-1+1,负数的话先去掉符号-,计算完毕后在在list的元素中加上