1 条题解

  • 0
    @ 2025-4-7 21:41:51

    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

    信息

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