输入样例:
3 4
yny
nyy
nyn
yyn
输出样例:
3
5
6
2
一开始居然傻傻的开始动手写二叉树的数据结构,还是题做少了...
写了一半感觉一个破L1的题凭什么这么麻烦,结果发现就是根据层序生成编号罢了
左子树编号是root2,右子树编号是root2+1
部分正确Code:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){int N, M;cin >> N >> M;while(M--){ll res = 1;for(int i = 0; i < N; i++){char ans;cin >> ans;if(ans == 'y'){res *= 2;}else{res = res * 2 + 1;}}cout << res - pow(2, N) + 1 << endl;}return 0;
}
pow返回值类型是double,存在精度问题,搞得最后一个测试点过不去。。。
AcCode:
#include<bits/stdc++.h>
using namespace std;
int main(){int N, M;cin >> N >> M;while(M--){int res = 1;for(int i = 0; i < N; i++){char ans;cin >> ans;if(ans == 'y'){res *= 2;}else{res = res * 2 + 1;}}int cnt = 1;for(int i = 1; i <= N; i++){cnt *= 2;}cout << res - cnt + 1 << endl;}return 0;
}