Problem Description

Eva的家庭作業裏有很多數列填空練習。填空練習的要求是:已知數列的前四項,填出第五項。因 為已經知道這些數列只可能是等差或等比數列,她決定寫一個程式來完成這些練習。

The Input

第一行是數列的數目t(0 <= t <= 20)。 以下每行均包含四個整數,表示數列的前四項。 約定數列的前五項均為不大於105的自然數,等比數列的比值也是自然數。

The Output

對輸入的每個數列,輸出它的前五項。

Sample Input

2
1     2     3     4
1     2     4     8

Sample Output

1     2     3     4     5
1     2     4     8     16

-----* Problem from【ZeroJudge, an Online Judge System For Beginners

My Answer

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  #include<iostream>
using namespace std;
int main(void)
{
  int list[5], t;
  while(cin>>t){
    for(; t>0; --t){
      for(int i=0; i<4; ++i){
        cin>>list[i];
      }
      int countA=0, countB=0;
      for(int i=1; i<3; ++i){
        //檢查是否為等差數列
        if(list[i]-list[i-1]==list[i+1]-list[i]){
          countA++;
        }
        //檢查是否為等比數列
        else if(list[i]/list[i-1]==list[i+1]/list[i]){
          countB++;
        }
      }

      if(countA==2){
        list[4]=list[3]+(list[3]-list[2]);
        for(int i=0; i<5; ++i){
          cout<<list[i]<<" ";
        }
        cout<<endl;
      }
      else if(countB==2){
        list[4]=list[3]*(list[3]/list[2]);
        for(int i=0; i<5; ++i){
          cout<<list[i]<<" ";
        }
        cout<<endl;
      }
    }
  }
  return 0;
}
 

 


arrow
arrow
    全站熱搜

    兔老大 發表在 痞客邦 留言(0) 人氣()