57分TLE求助
查看原帖
57分TLE求助
1048576
New_Void楼主2024/12/30 22:10
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    int t1;
    cin>>t1;
    for (int i=0;i<t1;i++){
        int n,s,t;
        cin>>n>>s>>t;
        int c=0;
        int d=2;
        int f=0;
        while (d--){
            if (s==t){
                cout<<c<<endl;
                break;
            }
            else if ((int)(s | t) == (int)(pow(2,n))-1 && t<(int)(pow(2,n))){
                c+=s ^ t;
                cout<<c<<endl;
                break;
            }
            else{
                int b=s;
                int x=(int)(pow(2,n))-1;
                while (x>0){//(int)(pow(2,n))){
                    if ((int)(s | x) == ((int)(pow(2,n))-1) && x<(int)(pow(2,n))){
                        if (f==0){
                            c+=(b ^ x);
                        }

                        f+=1;
                        b=x;
                    }
                    x-=1;
                    if (f==1){
                        s=b;
                    }
                    if (f>1){
                        if (b==t){
                            c+=(s ^ x);
                            s=b;
                            break;
                        }
                        else{
                            continue;
                        }
                    }
                }
            }
        }
    }
    return 0;
}
2024/12/30 22:10
加载中...