TopcoderArchiveVisit Topcoder
SRM12 Mar 2010
Member SRM 482

LockersDivTwo

Problem statement, definition, constraints, and public examples.

Problem Statement

A hallway is filled with lockers numbered 1 through N, initially all closed. Out of boredom, Dave and Earl decide to open all the lockers. They make multiple passes through the hallway, each beginning at locker 1. On the first pass, they open the first unopened locker, and every second unopened locker thereafter. On the second pass, they open the first unopened locker, and every third unopened locker thereafter. In general, on the nth pass, they open the first unopened locker, and every (n+1)th unopened locker thereafter.

For example, with 9 lockers, on the first pass they open 1, 3, 5, 7, and 9, leaving 2, 4, 6, and 8. On the second pass they open 2 and 8, leaving 4 and 6. On the third pass they open locker 4, and on the final pass locker 6.

You will be given N, the number of lockers. Return the number of the locker opened last.

Definition

Class:
LockersDivTwo
Method:
lastOpened
Parameters:
int
Returns:
int
Method signature:
int lastOpened(int N)
(be sure your method is public)

Constraints

  • N will be between 1 and 10000, inclusive.

Examples

  1. 9
    Returns: 6
    The example from the problem statement.
  2. 42
    Returns: 42
  3. 314
    Returns: 282
Back to all problems