1. 程式人生 > >我讀書少,你們得幫幫我(2018.11.27)

我讀書少,你們得幫幫我(2018.11.27)

首先我覺得出題的人一定是有毒T^T,這種神奇的家族他都搞得出來,也布吉島是不是單身太久了,他大概需要一個小姐姐來糾正他的三觀。所以如果看到這篇文章的你是一個有這個意向的小姐姐的話,請記得聯絡我,謝謝喵(手動筆芯)
好吧其實是我想吃糖了TvT,下面是正題不要打我。
描述:
這是一題簡單的題目,考的只是你的數學而已。我一直都很好奇愚公一家到底有多少人。好吧,毛學姐說你們會幫我的。假設愚公家族 每個人的一生是這樣度過的:(當他回首往事的時候。。。開個玩笑,請無視) 頭20年用來生長髮育以及挖山,第21年(可以理解為21歲的時候)開始 每年生下一個孩子( 自交,任性, 沒妻子,全生男,且不考慮死亡),當然還要去挖山。我們預設愚公11歲的時候為第一年(第21年愚公生下第一胎),求第N年愚公家族(愚公家族不需要妻子,別考慮太多)有多少人。
輸入:


有多組測試資料,每組佔一行,包括一個數N(0<N<=60),N為第N年。
輸出:
對於每組測試,輸出整數M,M為愚公家族的人。
樣例輸入 :

1
21
41

樣例輸出:

1
2
23

分析:
這道題第一眼看上去特別有斐波那契數列的錯覺。。。然後一個興奮就容易WA了
所以要冷靜分析,嗯就是這樣。
分析之後我們會發現,在第一年到第二十年之間都只有一個人(還未成年)
第二十一年到第四十年每年都比上一年多增加一個人,所以是:f(n-1)+1
第四十一年到第六十年是每一年都比上一年都增加二十年前的人數,所以是:f(n-1)+f(n-20),即為f(n-1)+n-39
由於題目中給了N<=60,所以之後的情況就不用分析了。
這道題分情況遞迴就可以了,並不難。
程式碼如下:

#include<stdio.h>
int yugong(int n)
{
    int a;
    if(n>=1 && n<=20)
        return 1;
    else if (n>20 && n<=40)
        a=yugong(n-1)+1;
    else if (n>40 && n<=60)
        a=yugong(n-1)+n-39;
    return a;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%d\n",yugong(n));
    }
    return 0;
}