等差数列的应用

年龄几何:张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是 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项,所以在循环内出现了我们需要的数据之后,就直接开始另一层循环,打印出里面的数据,之后再利用数组来进行存储,接下来就可以开始求和了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值