c语言写程序,求一正整数等差数列的前五项的立方和,该数列前四项之和是26,之积是880.

希望是能通过运行的,谢谢

第1个回答  推荐于2017-09-26
#include "stdio.h"
void main()
{int i,d,find=0;
int a0,a1,a2,a3,a4;
for(i=0;i<1000&&find==0;i++)
for(d=0;d<1000;d++)
{a0=i;
a1=i+d;
a2=i+2*d;
a3=i+3*d;
a4=i+4*d;
if(a0+a1+a2+a3==26&&a0*a1*a2*a3==880)
{
find=1;
break;
}

}
printf("%d %d %d %d %d",a0,a1,a2,a3,a4);
}本回答被提问者和网友采纳
第2个回答  2013-05-02
int seeker(int N,int H,int J,int NewN)
{
//输入参数N,前N项
//H:前N项的和
//J:前N项的积
//NewN:前NewN项的立方和
//等差数列公式
//an=a0+(n-1)b
//Sn=a0*n+(0+n-1)*n/2*b
//S4=a0*4+(0+4-1)*4/2*b=4*a0+6b
//由于是正整数,故a0>0,b>0
//返回值大于0表示正确找到
int tmpCount;
tmpCount=H/N;//为了减少计算次数,约束循环数tmpCount
for(int i=1;i< tmpCount;i++)
{
int Sn;
for(int j=1;j<H;j++)
{
Sn=i*N+(N-1)*N/2*j;

if(Sn==H)//当和符合条件时往下执行
{
int tmpB;
tmpB=J;
for(int k=1;k<N+1;k++)//为了减少计算次数,约束循环数tmpB
{
tmpB=int(tmpB/i);
}

for (int k=1;k<tmpB;k++)
{
int Jn=1;
for(int n=1;n<N+1;n++)
{
Jn=Jn*(i+(n-1)*k);
}

if(Jn==J)
{
int LF=0;

for(int m=1;m<NewN+1;m++)//计算前NewN项立方和
{
int an=(i+(m-1)*k);
LF=LF+an*an*an;
}
return LF;
}
}
}
}

}
return 0;

}

int _tmain(int argc, _TCHAR* argv[])
{
printf("%d",seeker(4,26,880,5));

return 0;
}
相似回答