B题为什么这个过不了

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
int len(int x){
    int ans=0;
    while(x){
        x>>=1;
        ++ans;
    }
    return ans;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T;
    cin>>T;
    for(int _=0;_<T;++_){
        int a,b,c;
        cin>>a>>b>>c;
        vector<int>ans;
        if(c==0){
            while(b){
                b>>=1;
                ans.push_back(2);
            }
            if(a){
                ans.push_back(4);
                ans.push_back(3);
                while(a){
                    a>>=1;
                    ans.push_back(2);
                }
            }
        }else if(a==0&&b==0){
            goto no;
        }else{
            if(len(b)<len(c)){
                if(len(a)>=len(c)){
                    b^=a;
                    ans.push_back(4);
                }else{
                    if(len(b)<len(a)){
                        b^=a;
                        ans.push_back(4);
                    }
                    int pa=1<<(len(b)-1),pc=1<<(len(c)-1);
                    while(pa!=pc){
                        if((!(a&pa))!=(!(c&pc))){
                            a^=b;
                            ans.push_back(3);
                        }
                        a<<=1;
                        ans.push_back(1);
                        pc>>=1;
                    }
                }
            }
            int p=1<<(len(b)-1);
            while(b){
                if((a&p)!=(c&p)){
                    a^=b;
                    ans.push_back(3);
                }
                b>>=1;
                ans.push_back(2);
                p>>=1;
            }
            ans.push_back(4);
        }
        cout<<ans.size()<<endl;
        for(int i=0;i<ans.size();++i){
            if(i)cout<<' ';
            cout<<ans[i];
        }
        cout<<endl;
        continue;
        no:
        cout<<"-1\n";
    }
    return 0;
}

全部评论
23行开始的c==0的逻辑整个都很奇怪,先不说混淆了ab变量,什么都不考虑直接按位异或肯定会留下一堆脏位的
点赞 回复 分享
发布于 07-30 20:43 北京

相关推荐

点赞 评论 收藏
分享
从明天开始狠狠卷JV...:叽里咕噜一大堆,不就是字典序,sort一下就搞定了。
投递京东等公司10个岗位
点赞 评论 收藏
分享
为啥美团有的笔试可以AI做题啊。。。。我们怎么就不行
碧海蓝涛:因为ai也做不出来
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务