24h購物| | PChome| 登入
2011-10-02 09:14:24| 人氣939| 回應0 | 上一篇 | 下一篇

a251. 假費波那契數

推薦 0 收藏 0 轉貼0 訂閱站台

a251. 假費波那契數

內容 :

        Mr. X 發明了一種新的方法來製造數列,他把它叫做"假費波那契數",因為他製造數列的方法和費波那契數非常相似。Mr. X 的數列由4個初始數字開始( S1, S2, S3, S4 <=5),對於數字Si ( i > 4) 定義為:Si = Si-4 + Si-1 :

 

        對於一個奇數NMr. X 希望產生N個假費波那契數,而Mr. X總是想知道這N個數的中位數是多少。舉例來說 S1 = 3, S2 = 2, S3 = 4, S4 = 1, N = 7,則數列為:

3, 2, 4, 1, 4, 6, 10

排序後為:

1, 2, 3, 4, 4, 6, 10

所以中位數字是4.

對於給定的初始數字及N,請輸出Mr. X想要知道的數

輸入說明 :

        每個測資檔包含多組測資。每個測資檔第一個數字T代表接下來有幾組測資。每筆測資有五個數字N, S1, S2, S3, S4,測資保證N(5<=N<20)為奇數且0<= S1, S2, S3, S4<=5,所有數字皆為整數。

輸出說明 :

對每筆測資輸出一行,代表Mr. X想要知道的數字。

範例輸入 :

2
5 3 2 4 1
7 3 2 4 1

範例輸出 :

3
4

提示 :

出處 :

成功高中校內賽初賽 第一題 (管理:david942j)

/**********************************************************************************/
/*  Problem: a251 "假費波那契數" from 成功高中校內賽初賽 第一題 */
/*  Language: C (394 Bytes)                                                       */
/*  Result: AC(2ms, 246KB) judge by this@ZeroJudge                                */
/*  Author: morris1028 at 2011-10-02 07:07:09                                     */
/**********************************************************************************/


#include<stdio.h>
#include<stdlib.h>
int cmp(const void *i, const void *j) {
    return *(int *)i - *(int *)j;
}
int main() {
    int T, S[21], i, n;
    scanf("%d", &T);
    while(T--) {
        scanf("%d", &n);
        for(i = 1; i <= 4; i++)
            scanf("%d", &S[i]);
        for(i = 5; i <= n; i++)
            S[i] = S[i-4] + S[i-1];
        qsort(S+1, n, sizeof(int), cmp);
        printf("%d\n", S[n/2+1]);
    }
    return 0;
}

台長: Morris
人氣(939) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: ZeroJudge |
此分類下一篇:a252. Another LCS
此分類上一篇:d572. 第六題:柏油我認識妳嗎之似曾不相識

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文