找规律

找规律

时间限制: 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 5
2 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;
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值