SDJZ 找规律填数字

题目描述

小宇正在读小学,今天老师布置了几道数学题目。小宇平时上课经常不专心,这些他可发愁了,怎么办呢?看看你能不能帮帮他。
题目是给你一组有规律序列的前面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 <iostream>
#include <cmath>
using namespace std;
int main()
{
    double a[10];
    while(cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4])
    {
        if((a[0]==0)&&(a[1]==0)&&(a[2]==0)&&(a[3]==0)&&(a[4]==0))
        {
            break;
        }
        else if((a[0]==1)&&(a[1]==1)&&(a[2]==1)&&(a[3]==1)&&(a[4]==1))
         {
            for(int u=5;u<10;u++)
            {
                cout<<"1 ";
            }
            cout<<endl;
         }
        else
        {
          double d1=a[4]-a[3],d2=a[3]-a[2],d3=a[2]-a[1],d4=a[1]-a[0];
          double q1=a[4]/a[3],q2=a[3]/a[2],q3=a[2]/a[1],q4=a[1]/a[0];
          if((d1==d2)&&(d2==d3)&&(d3==d4))
           {
               double n=d1;
               for(int i=5;i<10;i++)
               {
                   a[i]=a[0]+n*i;
                   cout<<a[i]<<" ";
               }
               cout<<endl;
           }
          else if((q1==q2)&&(q2==q3)&&(q3==q4))
               {
                   double q=q1;
                   for(int j=5;j<10;j++)
                   {
                       a[j]=a[0]*pow(q,j);
                       cout<<a[j]<<" ";
                   }
                   cout<<endl;
               }
            else
            {
                double d[10];
                d[0]=a[0];
                d[1]=a[1];
                for(int t=2;t<10;t++)
                {
                    d[t]=d[t-1]+d[t-2];
                }
                for(int y=5;y<10;y++)
                {
                    cout<<d[y]<<" ";
                }
                cout<<endl;
            }
        }

    }
    return 0;
}


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值