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;
}
posted @ 2025-03-03 23:24  Yuhhhhh  阅读(20)  评论(0)    收藏  举报