TopcoderArchiveVisit Topcoder
SRM22 Nov 2011
SRM 529

MinskyMysteryDiv2

Problem statement, definition, constraints, and public examples.

Problem Statement

Marvin plays a simple game. The game is played with an infinite supply of marbles and five bags, labeled "bag 0" through "bag 4".

At the beginning, Marvin takes N marbles (where N is a nonnegative integer) and places them into bag 0. The remaining four bags are left empty. Marvin then follows this simple algorithm:

    Add a marble into bag 1.
    Repeat forever:
        Add a marble into bag 1.
        Empty bag 4.
        While there are marbles in bag 0:
            While there are marbles both in bag 0 and in bag 1:
                Remove a marble from bag 0.
                Remove a marble from bag 1.
                Add a marble into bag 2.
                Add a marble into bag 3.
            End While
            Add a marble into bag 4.
            If bags 0 and 1 are both empty:
                Move all marbles from bag 3 to bag 4.
                TERMINATE THE GAME
            End If
            Move all marbles from bag 3 to bag 1.
        End While
        Move all marbles from bag 2 to bag 0.
    End Repeat

You are given a long N. Return a long containing the number of marbles that will be in bag 4 at the end of Marvin's game. If Marvin's game does not terminate for the given N, return -1 instead.

Definition

Class:
MinskyMysteryDiv2
Method:
computeAnswer
Parameters:
long
Returns:
long
Method signature:
long computeAnswer(long N)
(be sure your method is public)

Notes

  • You may assume that the answer always fits into a long.
  • Note that N is allowed to be zero.

Constraints

  • N will be between 0 and 10^12, inclusive.

Examples

  1. 2
    Returns: 3
  2. 3
    Returns: 4
  3. 4
    Returns: 4
  4. 15
    Returns: 8
  5. 24
    Returns: 14
Back to all problems