年龄几何:张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是
26
,相乘是
880
,求以他们的年龄为前
4
项的等差数列的前
20
项,以及前二十项和。
#include<iostream>
using namespace std;
int main()
{
int a,d;
int sum=0;
int arr[20];
for(a=0;a<5;a++)
{
for(d=0;d<5;d++)
{
if((4*a+6*d==26)&&a*(a*(a+d)*(a+2*d)*(a+3*d)==880))
{
cout<<"首项为"<<a<<','<<"公差为"<<d<<endl;
cout<<"前二十项为:"<<endl;
for(int i=1;i<=20;i++)
{
arr[i-1]=a+(i-1)*d;
cout<<a+(i-1)*d<<',';
}
cout<<endl;
}
}
}
cout<<"求出前20项和:"<<endl;
for(int i=0;i<20;i++)
{
sum=sum+arr[i];
}
cout<<"前20项之和为"<<sum<<endl;
return 0;
}
昨天写了好大一会儿都不出来,试过直接将四个人的年龄设成变量,如果这样的话就是用了五层循环,但最终的结果就是那四个数,但排列的顺序不同,一共十六种。
因为一直是循环,所以就要不停的循环到底,就算在循环里面得出了正确的公差和首项,但出了循环之后,答案却又大相径庭。换成了公差和首项两个变量之后,发现和四个变量一样的情况,出了循环又和循环内部的结果不同了。在这里我们要得到的是前20项,所以在循环内出现了我们需要的数据之后,就直接开始另一层循环,打印出里面的数据,之后再利用数组来进行存储,接下来就可以开始求和了。