2012年藍橋杯C/C++題目海盜比酒量

題目

有一羣海盜(不多於20人),在船上比拼酒量。過程如下:打開一瓶酒,所有在場的人平分喝下,有幾個人倒下了。
再打開一瓶酒平分,又有倒下的,再次重複……
直到開了第4瓶酒,坐着的已經所剩無幾,海盜船長也在其中。
當第4瓶酒平分喝下後,大家都倒下了。
等船長醒來,發現海盜船擱淺了。他在航海日誌中寫到:
“……昨天,我正好喝了一瓶…….奉勸大家,開船不喝酒,喝酒別開船……”
請你根據這些信息,推斷開始有多少人,每一輪喝下來還剩多少人。
如果有多個可能的答案,請列出所有答案,每個答案佔一行。
格式是:人數,人數,… 例如,有一種可能是:20,5,4,2,0

代碼

#include <iostream>
using namespace std;

int main()
{
    int a,b,c,d;
    for (a=20;a>=4;a--)
    {
        for (b=a-1;b>=3;b--)
        {
            for (c=b-1;c>=2;c--)
            {
                for (d=c-1;d>=1;d--)
                {
                    if ( 1.0/a+1.0/b+1.0/c+1.0/d == 1)
                        cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl;
                }
            }
        }
    }
}

析:

最後一瓶至少兩個人分,以每次倒一個人往前推。嵌套循環實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章