題目大意:
第一行給出動物總數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;
}