#44332: C++解法


31s158@ms.mingdao.edu.tw (吳仁翔)

學校 : 不指定學校
編號 : 286732
來源 : [140.128.156.248]
最後登入時間 :
2024-11-27 14:26:23
a005. Eva 的回家作業 -- POJ | From: [140.128.156.248] | 發表日期 : 2024-11-27 14:07

#include <iostream>
using namespace std;

int main() {
    int a = 0; // 宣告整數變數 a,表示有多少組數字
    int b = 0; // 宣告整數變數 b,將用來儲存計算結果
    cin >> a;  // 讀取一個整數,儲存為 a,表示有 a 組數字
    int x[a * 4]; // 宣告一個大小為 a * 4 的陣列 x,儲存所有輸入的數字
    for (int i = 0; i < a * 4; i++) {  // 讀取 a * 4 個數字並存入陣列 x
        cin >> x[i];  
    }
    
    for (int i = 0; i < a; i++) {  // 處理每一組數字(每組有 4 個數字)
        // 檢查這 4 個數字是否符合等差數列
        if (x[i * 4 + 1] - x[i * 4] == x[i * 4 + 2] - x[i * 4 + 1] && 
            x[i * 4 + 2] - x[i * 4 + 1] == x[i * 4 + 3] - x[i * 4 + 2]) {
            
            // 如果是等差數列,計算公差 d 和第五個數字
            int d = x[i * 4 + 1] - x[i * 4]; // 公差 d = 第二個數字 - 第一個數字
            int fifthTerm = x[i * 4 + 3] + d; // 第五個數字 = 第四個數字 + 公差 d
            
            for (int c = 0; c < 4; c++) {  // 輸出原本的 4 個數字
                cout << x[i * 4 + c] << " ";
            }
            cout << fifthTerm << endl;  // 輸出計算出來的第五個數字
        } else {  // 如果不是等差數列
            for (int c = 0; c < 4; c++) {  // 輸出原本的 4 個數字
                cout << x[i * 4 + c] << " ";
            }
            // 計算第三個數字與第二個數字的比值 b
            b = x[i * 4 + 2] / x[i * 4 + 1];  
            // 用比值 b 乘以第四個數字,並輸出結果
            cout << b * x[i * 4 + 3] << endl;
        }
    }
    
    return 0;  // 結束程式
}

 
ZeroJudge Forum