Sheba's Amoebas

題目大意:

第一行給出動物總數K,用Z代表斑馬,用O代表豹貓,每一次響鈴,最下面的豹貓會變成斑馬,與此同時這匹斑馬下面的所有斑馬(如果有也只能有斑馬)變成豹貓,問一共要多少次響鈴纔不會有變化(沒有豹貓);

思路:

看完題自然想到遞歸,順着這個思路試了幾個,發現放在第n位的豹貓完全消失是放在第n+1位的2倍,有因爲放在最後一個的豹貓只需一次就可以了,所以得出放在n位置上的豹貓消失需要2^(K-n)  ;

代碼:

#include<stdio.h>
using namespace std;
typedef long long ll;
ll num[61];
void intt()
{
    num[0]=1;
    for(int i=1;i<=60;i++)
        num[i]=num[i-1]*2;
    return ;
}
int main()
{
    intt();
    int t;
    ll ans;
    char c;
    while(scanf("%d",&t)!=EOF)
    {
        ans=0;
        getchar();
        for(int i=1;i<=t;i++)
        {
            scanf("%c",&c);
            getchar();
            if(c=='O')
                ans+=num[t-i];
        }
        printf("%lld\n",ans);
    }
    return 0;
}

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