報數遊戲

ScumVirus發表於2014-01-15
題目詳情

N個人(編號1-N),站成一排,進行報數遊戲。報數過程可能進行很多輪,有如下規則:

(1) 如果剩餘人數不超過3個人,則遊戲結束。

 (2)  大家報數,然後留下報奇數的人從第一個人繼續遊戲,或者留下報偶數的人繼續遊戲。

重複如此(1)(2)兩步驟,到遊戲結束。

問:最終剩下的三人組有多少種情況?(注意是三人組,例如如果最後剩下2個或者1個人,不計入結果中)。

輸入n, (0<n<=10000000)

輸出最終結果。

#include<stdio.h>
int counts;
void f1(int n)
{
    if(n<3)
        return;
    else if(n==3)
    {
        counts++;;
        return;
    }
    else
    {
        f1(n/2);
        f1((n+1)/2);
    }
}
int howmany (int n)
{
    counts=0;
    f1(n);
    return counts;
}
int main()
{    
    printf("%d",howmany(11));
}


相關文章