1 solutions

  • 0
    @ 2025-11-5 15:08:59

    C++ :

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <cstdlib>
    using namespace std ;
    
    int buff[10] ;
    
    int next( int n , int k ) {
        if( k == 0 || k == 1 ) return k ;
        long long k2 = ( long long ) k * k ;
        int size = 0 ;
        while( k2 != 0 ) { buff[size++] = k2 % 10 ; k2 = k2 / 10 ; }
        if( size < n ) n = size ;
        int res = 0 ;
        for( int i = 0 ; i < n ; i ++ ) { res = res * 10 + buff[--size] ; }
        return res ;
    }
    
    
    int main() {
        int T ; scanf("%d" , &T ) ;
        while( T -- ) {
            int n , k ; scanf("%d%d" , &n , &k ) ;
            int ans = k ;
            int k1 = k , k2 = k ;
            do {
                k1 = next( n , k1 ) ;
                k2 = next( n , k2 ) ; if( ans < k2 ) ans = k2 ;
                k2 = next( n , k2 ) ; if( ans < k2 ) ans = k2 ;
            }while( k1 != k2 ) ;
            printf("%d\n" , ans ) ;
        }
    
        return 0 ;
    }
    
    
    • 1

    Information

    ID
    16445
    Time
    3000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By