等差数列的应用

来源:互联网 发布:gmm 算法训练 编辑:程序博客网 时间:2024/06/08 05:24
年龄几何:张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是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项,所以在循环内出现了我们需要的数据之后,就直接开始另一层循环,打印出里面的数据,之后再利用数组来进行存储,接下来就可以开始求和了。

0 0