SRM487 Div2 Hard(900) BunnyConverter

BunnyConverter

逆から辿ればxが一意に定まる。900にしても簡単では?

class BunnyConverter{public:
int getMinimum( int n, int z, int start, int goal )
{
    int z3 = (long long)z * z % n * z % n;

    long long t = goal;
    for ( int i=0; i<n; i++ )
    {
        if ( t == start )
            return i;
        t = ( 2*n - t*t%n - z3 - 1 ) % n + 1;
    }

    return -1;
}};