找规律填数字

题目描述

小宇正在读小学,今天老师布置了几道数学题目。小宇平时上课经常不专心,这些他可发愁了,怎么办呢?看看你能不能帮帮他。
题目是给你一组有规律序列的前面5个整数,请你给出它后面跟着的5个整数,如:1,2,3,4,5,___,___,___,__,___。这是个等差数列,后面应该是6,7,8,9,10,就这么简单。而且现在小宇已经知道这串序列要么是等差数列,要么是等比数列或者是斐波那契数列。

输入描述

输入包含多组测试数据。每组输入5个整数,每个数字之间隔一个空格,当5个数字都为0时输入结束。

输出描述

对于每组输入,输出这串数列的后面5个数字,每个数字之间隔一个空格。

输入样例

1 2 3 4 5
1 2 4 8 16
1 2 3 5 8
0 0 0 0 0

输出样例

6 7 8 9 10
32 64 128 256 512
13 21 34 55 89

提示

#include
#include
using namespace std;

int main()
{
    int a,b,c,d,e;
    while(scanf("%d %d %d %d %d",&a,&b,&c,&d,&e)!=EOF)
    {
        int f[10];
        if(a==0&&b==0&&c==0&&d==0&&e==0)
            break;
        if((b-a==c-b)&&(b-a==d-c))//运用两组数据进行判断  否则例如 1 2 3等数据不易区分;
        {
            int de=b-a;
            f[0]=e+de;
            for(int i=1;i<5;i++)
            {
                f[i]=f[i-1]+de;
            }
        }
        else if(b*b==a*c&&c*c==b*d)
        {
            int bi=b/a;
            f[0]=e*bi;
            for(int i=1;i<5;i++)
                f[i]=f[i-1]*bi;
        }
        else
        {
            f[0]=d+e;
            f[1]=f[0]+e;
            f[2]=f[0]+f[1];
            f[3]=f[2]+f[1];
            f[4]=f[3]+f[2];
        }
        for(int i=0;i<5;i++)
           printf("%d ",f[i]);
           printf("\n");
    }
    return 0;
}

你可能感兴趣的:(数学)