问题及代码:
/*
*Copyright(c)2016,烟台大学计算机与控制工程学院
*All right reserved.
*文件名称:77.cpp
*作 者:董凯琦
*完成日期:2016年3月13日
*版 本 号:v1.0
*
*问题描述:张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加26,相乘是880,求以他们的年龄前4项的等差数列的前20项
*输入描述:无
*程序输出:20个整数
*/
#include <iostream>
using namespace std;
int main()
{
int n,a;
int i,sn;
for(a=1;a<=4;a++)
for(n=1;n<=6;n++)
{
if((4*n+6*a==26)&&n*(n+a)*(n+2*a)*(n+3*a)==880)
{
cout<<n;
for(i=1;i<20;i++)
{
sn=n+a*i;
cout<<ends<<sn;
}
}
}
return 0;
}
运行结果:
知识点总结:
这个程序运用了枚举的思想,加深了穷举法解决组合问题的理念。
学习心得:
起初对怎样输出20个数没有思路,后来经过考虑,想到了这种方法。并且要注意两点:一,for循环内的条件不能是i<=20;第二,cout输出的时候应先输入空格,因为起初输出了一个n,不然会导致前两个数看成25