题目分析:
二进制
开始的时候很容易没看清题意,写if - else循环,但是仔细看会发现这是个满二叉树,我们可以将每个选择当成0 - 1操作,这样会发现,最后得到的二进制数转换成十进制与样例结果仅差一
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <cmath>
using namespace std;
const int N = 100 + 10;
int n, m;
string s;
int check(string s)
{
int t = 0;
for(int i = 0; i < n; i++)
{
if(s[i] == 'y'){
t = t * 2 + 0;
}
else{
t = t * 2 + 1;
}
}
return t + 1;
}
int main()
{
cin>>n>>m;
getline(cin, s);
while (m -- ){
getline(cin, s);
cout<<check(s)<<endl;
}
return 0;
}