HJ76 尼科彻斯定理
解题思路
- 尼科彻斯定理说明任何整数的立方都可以写成连续奇数的和
- 对于数字
,需要找到
个连续奇数,使其和等于
的立方
- 分析规律可以发现:
- 可以发现第一个奇数是

- 后续的数字每次加2直到加够
个数
代码
#include <iostream>
#include <string>
using namespace std;
string solution(int m) {
// 计算第一个奇数
int first = m * m - m + 1;
string result = "";
// 生成m个连续奇数
for(int i = 0; i < m; i++) {
if(i > 0) {
result += "+";
}
result += to_string(first + 2 * i);
}
return result;
}
int main() {
int m;
cin >> m;
cout << solution(m) << endl;
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
System.out.println(solution(m));
}
public static String solution(int m) {
// 计算第一个奇数
int first = m * m - m + 1;
StringBuilder sb = new StringBuilder();
// 生成m个连续奇数
for(int i = 0; i < m; i++) {
if(i > 0) {
sb.append("+");
}
sb.append(first + 2 * i);
}
return sb.toString();
}
}
def solution(m):
# 计算第一个奇数
first = m * m - m + 1
result = []
# 生成m个连续奇数
for i in range(m):
result.append(str(first + 2 * i))
# 用+连接所有数字
return '+'.join(result)
# 处理输入
m = int(input())
print(solution(m))
算法及复杂度
- 算法:数学规律 + 字符串拼接
- 时间复杂度:
- 需要生成
个数字并拼接
- 空间复杂度:
- 只需要常数级额外空间