张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。
构建代码:
/*
*Copyright (c) 2014,烟台大学计算机学院
*All gight reserved.
*文件名称:temp.cpp
*作者:邵帅
*完成时间:2014年10月25日
*版本号:v1.0
*
*问题描述:求等差数列
*输入描述:无
*程序输出;输出20项的等差数列
*/
#include<iostream>
using namespace std;
int main()
{
int a,n,i;//n为最小的年龄,a为项差,i为记录循环的次数
for (n=1; n>=1 && n<=6; n++)
{
for (a=1; a>=1 && a<=4; a++)
{
if (4*n+6*a==26 && n*(n+a)*(n+a+a)*(n+a+a+a)==880)
{
for (i=1; i<=20; i++,n=n+a)
cout<<n<<" ";
}
}
}
return 0;
}
运行结果:
思路:设数列的首项为n(1<=n<=6),项差为a(1<=a<=4),前4项之和=4*n+6*a,前4项之积=n*(n+a)*(n+a+a)*(n+a+a+a),当进行穷举出现符合两式时跳出循环。
@ Mayuko