题目
描述:
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
题目类别:
循环
难度:
初级
运行时间限制:
无限制
内存限制:
无限制
阶段:
入职前练习
输入:
整数m(取值范围:1~100)
输出:
尼科彻斯定理成立,输出m个连续奇数(格式:“7+9+11”);否则输出-1
样例输入:
3
样例输出:
7+9+11
代码
/*---------------------------------------
* 日期:2015-07-02
* 作者:SJF0115
* 题目:尼科彻斯定理
* 来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include <vector>
using namespace std;
vector<int> Sum(int m){
vector<int> result;
if(m <= 0){
return result;
}//if
int n = m * m * m;
int sum,start;
for(int i = 1;i <= n;i+=2){
start = i;
sum = 0;
for(int j = 0;j < m;++j){
sum += start;
result.push_back(start);
start += 2;
}//for
if(sum == n){
return result;
}//if
else{
result.clear();
}//else
}//for
return result;
}
// 输出
void Print(vector<int> result){
int size = result.size();
if(size == 0){
cout<<"-1"<<endl;
return;
}//if
for(int i = 0;i < size;++i){
if(i == size-1){
cout<<result[i]<<endl;
}//if
else{
cout<<result[i]<<"+";
}//else
}//for
}
int main(){
int n = 0;
vector<int> result;
while(cin>>n){
result = Sum(n);
Print(result);
}//while
return 0;
}
时间: 2024-11-29 06:15:24