描述
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
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 a[100],flag=1; int i,j,n; while(scanf("%d %d %d %d %d",&a[0],&a[1],&a[2],&a[3],&a[4]) != EOF) { i=0; flag=1; int k=1; for(i=0;i<5;i++) { if(a[i]==0) { k=0; } } if(k&&a[2]%a[1]==0&&a[3]%a[2]==0&&a[4]%a[3]==0&&a[1]%a[0]==0) { n=a[2]/a[1]; for(i=5;i<10;i++) { a[i]=a[i-1]*n; } } else if(a[1]-a[0]==a[2]-a[1] && a[2]-a[1]==a[3]-a[2] && a[3]-a[2]== a[4]-a[3]) { n=a[2]-a[1]; for(i=5;i<10;i++) { a[i]=a[i-1]+n; } } else if(a[3]==a[2]+a[1]&&a[4]==a[3]+a[2]&&a[2]==a[1]+a[0]) { for(i=5;i<10;i++) { a[i]=a[i-1]+a[i-2]; } } else { flag=0; printf("None\n"); } if(flag) { for(i=5;i<10;i++) { printf("%d ",a[i]); } printf("\n"); } } return 0; }