L1-071 前世档案
思路:
直接根据玩家的回答,对底层的分支答案进行左右取半(当前区间的一半)。最后的左右区间会相等,即是根据玩家回答得到的答案。
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n,m,x,y;
char c;
cin>>n>>m;
for(int i=0;i<m;i++){
x=1;
y=pow(2,n);
getchar();
for(int j=0;j<n;j++){
c=getchar();
if(c=='y'){
y=(x+y)/2;
}
else{
x=(x+y)/2+1;
}
}
cout<<x<<endl;
}
}