1 条题解

  • 0
    @ 2025-4-12 21:33:54

    C++ :

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    
    using namespace std ;
    
    int res1 , res2 , res3 ;
    
    void dfs( int n , int from , int to , unsigned long long m ) {
    
        unsigned long long MID = ( ( unsigned long long )1 << ( n - 1 ) ) ;
    
        if( m < MID ) dfs( n - 1 , from , 6 - from - to , m ) ;
        else if( m > MID ) dfs( n - 1 , 6 - to - from ,  to , m - MID ) ;
        else { res1 = n ; res2 = from ; res3 = to ; }
    
    }
    
    int main() {
    
        int T ; scanf("%d" , &T ) ;
        while( T -- ) {
    
            int n ; unsigned long long m ;
            cin>>n>>m ;
            dfs( n , 1 , 3 , m ) ;
            printf("%d %d %d\n" , res1 , res2 , res3 ) ;
    
        }
    
        return 0 ;
    }
    
    
    • 1

    信息

    ID
    695
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者