熱門文章

2025年6月20日 星期五

ZeroJudge 解題筆記:a005. Eva 的回家作業

作者:王一哲
日期:2025年6月20日


ZeroJudge 題目連結:a005. Eva 的回家作業

解題想法


用迴圈檢查前 4 項是等差或等比數列,再補上第 5 項,最後輸出這 5 項。

Python 程式碼


使用時間約為 16 ms,記憶體約為 3.3 MB,通過測試。
t = int(input())
for _ in range(t):
    arr = list(map(int, input().split()))
    state = True  # True 為等差, False 為等比
    d = arr[1] - arr[0]  # 公差
    for i in range(1, 3):  # 檢查 arr[1] ~ arr[3]
        if arr[i+1] - arr[i] != d:  # 如果差不相等,為等比數列
            state = False
            break
    if state:  # 等差數列
        arr.append(arr[3] + d)
    else:  # 等比數列,題目保證是整數
        arr.append(arr[3] * (arr[3] // arr[2]))
    print(*arr)


C++ 程式碼


使用時間約為 1 ms,記憶體約為 88 kB,通過測試。
#include <cstdio>
using namespace std;

int main() {
    int t; scanf("%d", &t);
    while(t--) {
        int arr[5];
        for(int i=0; i<4; i++) scanf("%d", &arr[i]);
        bool state = true;  // true 為等差, false 為等比
        int d = arr[1] - arr[0];  // 公差
        for(int i=1; i<3; i++) {  // 檢查 arr[1] ~ arr[3]
            if (arr[i+1] - arr[i] != d) {  // 如果差不相等,為等比數列
                state = false;
                break;
            }
        }
        if (state) arr[4] = arr[3] + d;  // 等差數列
        else arr[4] = arr[3] * (arr[3] / arr[2]);  // 等比數列,題目保證是整數
        for(int i=0; i<4; i++) printf("%d ", arr[i]);
        printf("%d\n", arr[4]);
    }
    return 0;
}


沒有留言:

張貼留言