mipt028.cpp

来自「El Judge MIPT solutions to some easy pro」· C++ 代码 · 共 49 行

CPP
49
字号
/*
Alfonso2 Peterssen
18 - 7 - 2008
MIPT #028 "Circle Game"
*/
#include <cstdio>

#define REP( i, n ) \
    for ( register int i = 0, __e = (n); i < __e; i++ )

const int MAXK = 30;

int K, M;
int next[MAXK];
int last[MAXK];

bool valid( int m ) {
    m--;

    REP( i, 2 * K ) {
        next[i] = i + 1;
        last[i] = i - 1;
    }
    next[2 * K - 1] = 0;
    last[0] = 2 * K - 1;

    int kid = 0;
    REP( i, K ) {
        REP( j, m % ( 2 * K - i ) )
            kid = next[kid];
        if ( kid < K )
            return 0;
        next[ last[kid] ] = next[kid];
        last[ next[kid] ] = last[kid];
        kid = next[kid];
    }

    return 1;
}

int main() {

    scanf( "%d", &K );
    for ( M = K + 1; !valid( M ); M++ );
    printf( "%d\n", M );

    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?