TopCoder problem "StairClimb" used in SRM 168 (Division II Level One)

Problem Statement


You are climbing a staircase. The staircase consists of some number of flights of stairs separated by landings. A flight is a a continuous series of stairs from one landing to another. You are a reasonably tall athletic person, so you can climb a certain number of stairs in one stride. However, after each flight, there is a landing which you cannot skip because you need to turn around for the next flight (which continues in the opposite direction).

You will be given the number of stairs in each flight in a int[] flights. Element 0 of flights represents the number of stairs in the first flight, element 1 is the number of stairs in the second flight, etc. You will also be given an int stairsPerStride, which is how many continuous stairs you climb in each stride. If it takes two strides to turn around at a landing, return the number of strides to get to the top of the staircase. You do not need to turn at the top of the staircase.



Parameters:int[], int
Method signature:int stridesTaken(int[] flights, int stairsPerStride)
(be sure your method is public)


-flights has between 1 and 50 elements, inclusive.
-Each element of flights is between 5 and 30, inclusive.
-stairsPerStride is between 2 and 5, inclusive.


Returns: 8
A simple staircase with 15 steps. In 7 strides, you've climbed 14 steps. However, you still have one step left, so you must use an additional stride to get to the top.
Returns: 18
This time, there are two flights with a landing in between. 8 strides to get to the first landing, 2 strides to turn around, and 8 more strides to get to the top makes 8+2+8=18 strides.
Returns: 44

Problem url:

Problem stats url:




lbackstrom , brett1479

Problem categories:

Simple Math