题目链接:
https://www.nowcoder.com/questionTerminal/dbace3a5b3c4480e86ee3277f3fe1e85
题目描述
验证尼科彻斯定理,即:任何一个整数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
解题思路
假设要求的数为 m的立方,则它可以写成 m个奇数相加的和
则首先得确定第一个奇数:m*(m-1)+1
之后在循环内求出后m-1个奇数
要求输出为一个字符串
用流来处理此问题
实现代码
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Title2{
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(System.in); //将输入的字节流转换为字符流
BufferedReader bf = new BufferedReader(isr); //缓冲区输入流
String s ;
while((s = bf.readLine()) != null) {
int m = Integer.valueOf(s); //将读进来的字符串转换为数字
int head = m*(m-1)+1; //首项的值
System.out.print(head); //输出首项
for(int i = 1; i < m;i++) { //递归输出之后的m-1项
System.out.print("+"+(head +=2));
}
System.out.println();
}
bf.close(); //关闭流
}
}