问题 BO: 找规律填数字

题目描述

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

输入

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

输出

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

样例输入 Copy

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

样例输出 Copy

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

代码

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    float a[15];
    while(1){

    int dc=1,db=1,fb=1;
  //int a[15];
  for(int i = 0;i < 5;i++){
      cin>>a[i];
  }
  if(a[0]==0&&a[4]==a[0]&&a[3]==0&&a[2]==0&&a[1]==0){
      break;
  }
  float d;
  float q;
  for(int i = 1;i < 5;i++){
      
          if(dc==1)     
         { if(i==1){
            d=a[i]-a[i-1];      
          }
          else if(d!=a[i]-a[i-1]){
              dc=0;
          }
      }
      
      if(db==1){
          if(i==1){
              q=a[i]/a[i-1];
          }
          else if((q!=a[i]/a[i-1])){
              db=0;
          }
      }
      if(fb==1){
          if(i>=2&&i<5){
           if(a[i]!=(a[i-1]+a[i-2])){
            fb=0;
           }
          }
      }
  
  }
  int num;
  if(dc==1){
      num=a[4];
     for(int i = 0;i < 5;i++){
         num=num+d;
         cout<<num;
         if(i!=4){
             cout<<" ";
         }
     } 
     cout<<endl;
     //continue;
  }
  else if(db==1){
      num=a[4];
      for(int i = 0;i < 5;i++){
          num=num*q;
          cout<<num;
          if(i!=4){
              cout<<" ";
          }
      }
      cout<<endl;
      //continue;
  }
  else if(fb==1){
     
     // cout<<a[5]<<" ";
      for(int i = 5;i < 10;i++){
          
          a[i]=a[i-1]+a[i-2];
          cout<<a[i];
          if(i!=9)
          cout<<" ";
      }
      cout<<endl;
     // continue;
  }
    
}
return 0;
}
#include<stdio.h>
int main()
{
  double d1,n1,n2,n3,n4,n5,a,b,c,d,e;
  while(scanf("%lf %lf %lf %lf %lf",&n1,&n2,&n3,&n4,&n5)!=EOF && n1!=0
       && n2!=0 && n3!=0 && n4!=0 && n5!=0)
  {
    d1=0;
    if(n2-n1==n3-n2 && n3-n2==n4-n3 && n4-n3==n5-n4)
    {d1=n2-n1;
      a=n5+d1;
      b=a+d1;
      c=b+d1;
      d=c+d1;
      e=d+d1;
    }
    else if(n2/n1==n3/n2 && n3/n2==n4/n3 && n4/n3==n5/n4)
    {d1=n2/n1;
     a=n5*d1;
      b=a*d1;
      c=b*d1;
      d=c*d1;
      e=d*d1;
    }
    else if(n1+n2==n3 && n2+n3==n4 && n3+n4==n5)
    {a=n4+n5;
     b=n5+a;
     c=a+b;
     d=b+c;
     e=c+d;
    }
    printf("%.f %.f %.f %.f %.f\n",a,b,c,d,e);
  }
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值