找规律

来源:互联网 发布:caffe和coffee区别 编辑:程序博客网 时间:2024/04/24 03:52

找规律

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描述
xiaod 在小学时最喜欢上数学课了,有一次上课,数学老师布置了一道题目:给你一组有规律的整数,而且只给出前5项,让你求出后面5项。比如:1,2,3,4,5,__,__,__,__,__。显然这是等差数列,所以答案应该是6,7,8,9,10。为了简化题目,老师规定规律只有三种:等差数列、等比数列、斐波那契数列(f[i]=f[i-2]+f[i-1]);且公差、公比均为整数,所有出现的数字不会超出 int 范围。怎么样,很简单吧?聪明的你,来比一比你和 xiaod 谁算的快吧。
输入
有多组测试数据。
每行5个整数,代表题目给出的前5项。
输出
如果能找到符合条件的规律,则输出5个整数,代表后5项的值。
否则,请输出"None"。(引号不用输出)
样例输入
1 2 3 4 52 3 5 8 13
样例输出
6 7 8 9 10

21 34 55 89 144

代码实现:

#include<stdio.h>
int main()
{
int a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;
while(scanf("%d%d%d%d%d",&a0,&a1,&a2,&a3,&a4)!=EOF)
{
//等差 
if(a1-a0==a2-a1&&a2-a1==a3-a2&&a3-a2==a4-a3)
{
int d=a1-a0;
printf("%d %d %d %d %d\n",a4+d,(a4+2*d),(a4+3*d),(a4+4*d),(a4+5*d));
//continue;
}
//等比
else if(a1!=0&&a2!=0&&a3!=0&&a4!=0&&a0!=0&&(float)a1/a0==(float)a2/a1&&(float)a2/a1==(float)a3/a2&&(float)a3/a2==(float)a4/a3)
{
int d=a1/a0;
printf("%d %d %d %d %d\n",(a4*d),(a4*d*d),(a4*d*d*d),(a4*d*d*d*d),(a4*d*d*d*d*d));
//continue;

//斐波南希数列 
else if(a0+a1==a2&&a1+a2==a3&&a2+a3==a4) 
{
a5=a3+a4;
a6=a5+a4;
a7=a5+a6;
a8=a6+a7;
a9=a7+a8;
printf("%d %d %d %d %d\n",a5,a6,a7,a8,a9);
//continue;
}
else 
{
printf("None\n");
//continue;
}

}
return 0;
}

原创粉丝点击