題目敘述
每筆測資第一行有一個正整數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";
}
}
留言
張貼留言