Drawing book

Brie’s Drawing teacher asks her class to open their n-page book to page number p. Brie can either start turning pages from the front of the book (i.e., page number 1) or from the back of the book (i.e., page number n), and she always turns pages one-by-one (as opposed to skipping through multiple pages at once). When she opens the book, page 1 is always on the right side:

image

Each page in the book has two sides, front and back, except for the last page which may only have a front side depending on the total number of pages of the book

Given n and p, find and print the minimum number of pages Brie must turn in order to arrive at page.

The first line contains an integer, n', denoting the number of pages in the book.

The second line contains an integer, 'p', denoting the page that Brie's teacher wants her to turn to.

#!/bin/python

import sys


n = int(raw_input().strip())
p = int(raw_input().strip())

# your code goes here
# some boundary conditions
if p == 1 or p == n or (n % 2 != 0 and p == (n - 1)):
    print 0 # no turning is necessary

else:
    fwd_turns = 0
    bwd_turns = 0
    if p % 2 == 0: # even page
        fwd_turns = p//2
        bwd_turns = (n - p) // 2

    else: # odd page number
        fwd_turns = p//2
        if n % 2 == 0:
            bwd_turns = ((n - p) // 2) + 1
        else:
            bwd_turns = (n - p) // 2

    if fwd_turns <= bwd_turns:
        print fwd_turns
    else:
        print bwd_turns

Last updated

Was this helpful?