第十一周项目2-2-年龄几何?

/*                    
*程序的版权和版本声明部分:                    
*Copyright(c)2013,烟台大学计算机学院学生                    
*All rights reserved.                    
*文件名称:                    
*作者:田成琳                    
*完成日期:2013年 10月25 日                    
*版本号:v1.0                    
*对任务及求解方法的描述部分:                    
*输入描述: 张三,李四,王五,刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们年龄为前4项的等差数列的前20项 
*问题描述:穷举法  
*程序输出:他们年龄为前4项的等差数列的前20项 
*问题分析:                    
*算法设计:                    
*/   
我的程序:  
#include<iostream>
using namespace std;
int main()
{
	int a,b,c,d,n,sum=0;
	cout<<"以他们的年龄为前4项的等差数列前20项为:"<<endl;
	for(a=1;a<=26;a++)
		for(b=1;b<=26;b++)
			for(c=1;c<=26;c++)
				for(d=1;d<=26;d++)
					if(a+b+c+d==26&&a*b*c*d==880)                        //一个大if先判断条件是否符合
					{
						if(a<=b&&b<=c&&c<=d)                             //考虑到等差只有两种情况,所以先if一下
						{       
							 cout<<a<<" "<<b<<" "<<c<<" "<<d<<" ";       //先把他们年龄输出,再考虑后面
							for(n=1;n<=16;n++)                           //题目要求输出前20项,故n<=16
							{  
								sum=d+((d-c)*n);                         //这个循环体这一部分想了好久,终于成功
								
								cout<<sum<<" ";
							}
							cout<<endl;			
						}
						else if(d<=c&&c<=b&&b<=a)                        
						{
							cout<<a<<" "<<b<<" "<<c<<" "<<d<<" ";          //这一块没技术含量,和上面一样
							for(n=1;n<=16;n++)
							{
								sum=d+((d-c)*n);
								cout<<sum<<" ";
							}
							cout<<endl;
						}
					}
					return 0;
}


运行结果:

心得体会:开始时脑子有大体思路,落实起来时循环体那部分脑子混乱了,不过这还难不倒我,仔细研究就出来了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值