c++,验证任何一个自然数n的立方都可以写成n个连续奇数之和,求修改#includevoid main( ){int n,i,j=1,h,k=0;cin>>n;h=n*n*n;for(i=1;i

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 12:09:31
c++,验证任何一个自然数n的立方都可以写成n个连续奇数之和,求修改#includevoidmain(){intn,i,j=1,h,k=0;cin>>n;h=n*n*n;for(i=1;ic++,验证

c++,验证任何一个自然数n的立方都可以写成n个连续奇数之和,求修改#includevoid main( ){int n,i,j=1,h,k=0;cin>>n;h=n*n*n;for(i=1;i
c++,验证任何一个自然数n的立方都可以写成n个连续奇数之和,求修改
#include
void main( )
{int n,i,j=1,h,k=0;
cin>>n;
h=n*n*n;
for(i=1;i

c++,验证任何一个自然数n的立方都可以写成n个连续奇数之和,求修改#includevoid main( ){int n,i,j=1,h,k=0;cin>>n;h=n*n*n;for(i=1;i
你目前的循环 只是从1累加 这样是不符合题意的
应该是对于一些列的奇数 做从该奇数开始 共计n个奇数的累加 直到和为立方值为止
这个是思路 
接下来是我写的程序,中间对累加做了优化 采用等差数列求和公式 减少循环开销
供参考
#include <iostream>
using namespace std;
int main()
{
\x05int n;
\x05int i;
\x05int n3, sum;
\x05cin >> n;
\x05if(n > 1290 || n < -1290) 
\x05{
\x05\x05cout << "out of range\n";
\x05\x05return -1;
\x05}
\x05n3 = n*n*n;
\x05for(i = 1; ; i +=2)
\x05{
\x05\x05sum = (i + n - 1)*n;
\x05\x05if(sum == n3) 
\x05\x05{
\x05\x05\x05cout<<"ok. " << n << "^3 = " << n3 << "= " << i << "+ ... + "<< i+2*n-2<<endl;
\x05\x05\x05break;
\x05\x05}
\x05\x05if(sum > n3) break;
\x05}
\x05if(sum != n3) cout << "failed" << endl;
\x05return sum != n3;
}