描述
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。
数据范围:1≤m≤100 1≤m≤100
进阶:时间复杂度:O(m) O(m) ,空间复杂度:O(1) O(1)
输入描述:
输入一个int整数
输出描述:
输出分解后的string
示例1
输入:6
输出:31+33+35+37+39+41
#include <iostream>
using namespace std;
int main() {
int m;
while(cin>>m){
if(m>=1&&m<=100){
int sum=m*m*m;
int a=sum/m;
if(m%2==0){
for(int i=m*m-m+1;i<=m*m+m-1;i+=2){
if(i!=m*m+m-1)
cout<<i<<"+";
else cout<<i;
}
}else{
for(int j=m*m-m+1;j<=m*m+m-1;j+=2){
if(j!=m*m+m-1)cout<<j<<"+";
else cout<<j;
}
}
}else cout<<"error"<<endl;
}
}
// 64 位输出请用 printf("%lld")

该程序实现了一个C++代码,用于验证尼科彻斯定理,即任何正整数的立方可以表示为该数个连续奇数之和。程序接收一个不超过100的正整数m,然后输出m的立方所对应的连续奇数序列。对于偶数m,从m*m-m+1开始,到m*m+m-1结束;对于奇数m,序列相同但起点不同。程序要求具有O(m)的时间复杂度和O(1)的空间复杂度。
297

被折叠的 条评论
为什么被折叠?



