Hackerrank - Lisa's Workbook Solution
Lisa just got a new math workbook. A workbook contains exercise problems, grouped into chapters. Lisa believes a problem to be special if its index (within a chapter) is the same as the page number where it's located. The format of Lisa's book is as follows:
- There are chapters in Lisa's workbook, numbered from to .
- The chapter has problems, numbered from to .
- Each page can hold up to problems. Only a chapter's last page of exercises may contain fewer than problems.
- Each new chapter starts on a new page, so a page will never contain problems from more than one chapter.
- The page number indexing starts at .
Given the details for Lisa's workbook, can you count its number of special problems?
For example, Lisa's workbook contains problems for chapter , and problems for chapter . Each page can hold problems. The first page will hold problems for chapter . Problem is on page , so it is special. Page contains only Chapter , Problem , so no special problem is on page . Chapter problems start on page and there are problems. Since there is no problem on page , there is no special problem on that page either. There is special problem in her workbook.
Note: See the diagram in the Explanation section for more details.
Complete the workbook function in the editor below. It should return an integer that represents the number of special problems in the workbook.
workbook has the following parameter(s):
- n: an integer that denotes the number of chapters
- k: an integer that denotes the maximum number of problems per page
- arr: an array of integers that denote the number of problems in each chapter
The first line contains two integers and , the number of chapters and the maximum number of problems per page.
The second line contains space-separated integers where denotes the number of problems in the chapter.
Print the number of special problems in Lisa's workbook.
5 3 4 2 6 1 10
The diagram below depicts Lisa's workbook with chapters and a maximum of problems per page. Special problems are outlined in red, and page numbers are in yellow squares.
There are special problems and thus we print the number on a new line.
Solution in Python
from math import ceil def workbook(n, k, arr): p,c = 1,0 for i in arr: for j in range(ceil(i/k)): if p>j*k and p<=j*k+min(k,i): c+=1 i-=k p+=1 return c n,k = map(int,input().split()) arr = map(int,input().split()) print(workbook(n, k, arr))