2020-PTA总决赛-L1-7 前世档案(思路)
输入样例:
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;
}