ZeroJudge A251: 假費波那契數

題目敘述

每筆測資第一行有一個正整數T,接下來會有T行,每行會有一個正整數N和4個正整數S[0]~S[3],將數列延伸至長度為N的數列,S[4] (含) 之後的算法是:S[i] = S[i-4] + S[i-1]。要求輸出延伸後的數列的中位數 (N保證為奇數)。


範例輸入 #1

2

5 3 2 4 1

7 3 2 4 1

範例輸出 #1

3

4


解題思路

將資料輸入並運算至數列長度為N之後進行排序並輸出陣列中第N/2的位置。

解題程式碼如下 (僅供參考):

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int T;
    cin >> T;
    for (int i = 0; i<T; i++)
    {
        int N;
        cin >> N;
        vector<int>num;
        for (int j = 0; j<4; j++)
        {
            int tmp;
            cin >> tmp;
            num.push_back(tmp);
        }
        for (int j = 4; j<N; j++)
        {
            int tmp = num[j-4] + num[j-1];
            num.push_back(tmp);
        }
        sort(num.begin(), num.end());
        cout << num[N/2] << "\n";
    }
}

留言

這個網誌中的熱門文章

ZeroJudge M933: 邏輯電路

ZeroJudge A148: You Cannot Pass?!

ZeroJudge M932: 蜜蜂觀察