巡邏的士兵

#include <iostream>
#include <map>

using namespace std;
typedef long long ll;
map<ll,ll> m;

ll f(ll n)
{
    if(n<3) return 0;
    if(n==3) return 1;
    if(m.find(n)!=m.end()) return m[n];
    return m[n]=f(n/2)+f((n+1)/2);
}

int main()
{
    ll n;
    while(cin>>n,n!=0)
        cout<<f(n)<<endl;
    return 0;
}

計(jì)算情況數(shù)。

每一次都篩掉隨機(jī)一半,所以把一次選擇變成被拆分后的兩次選擇相加,可以想到,如果人數(shù)是偶數(shù),(n+1)/2并不影響結(jié)果,而如果人數(shù)是奇數(shù),那一定會(huì)被拆成兩個(gè)連續(xù)的數(shù)字相加,此時(shí)(n+1)/2可以表示較大的那個(gè)數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:選D,7+9=16;9+(-1)=8;(...
    Alex_bingo閱讀 19,790評(píng)論 1 19
  • 【程序1】 題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一...
    阿里高級(jí)軟件架構(gòu)師閱讀 3,384評(píng)論 0 19
  • 最近總做些奇奇怪怪的夢(mèng),醒來(lái)還記得,昨晚夢(mèng)到自己化身驍勇善戰(zhàn)的女戰(zhàn)士,和人民群眾一起對(duì)抗生化蟒蛇和異形鬼,殺敵無(wú)數(shù)...
    元元_711a閱讀 273評(píng)論 0 1
  • 驢說(shuō): 沒(méi)有我你就不會(huì)轉(zhuǎn)動(dòng), 磨說(shuō): 沒(méi)有我你就會(huì)心痛, 驢說(shuō): 咱倆一起逃吧! 磨說(shuō): 逃到哪都得拉磨。 驢說(shuō):...
    旖旎i閱讀 520評(píng)論 11 12
  • 應(yīng)用場(chǎng)景 linux管理員忘記root密碼,需要進(jìn)行找回操作。注意事項(xiàng):本文基于centos7環(huán)境進(jìn)行操作,由于c...
    icoder閱讀 4,955評(píng)論 0 2

友情鏈接更多精彩內(nèi)容