Editorial for COCI '08 Contest 1 #4 Jez
Submitting an official solution before solving the problem yourself is a bannable offence.
There are three parts to the solution:
- Find the number of complete diagonals the hedgehog walks on and also how many cells on the last diagonal.
- For every row:
- Calculate how many cells in the row the hedgehog visits;
- Calculate how many of those cells are grey.
For the first part, it suffices to add diagonals one by one, stopping when the total number of cells visited is more than .
The number of visited cells in a row can be calculated from , and the number of diagonals traversed.
What remains is to calculate, for two integers and , how many integers between and there are such that is zero, where is the "bitwise and" operator. Consider the binary representation of and let be the position of the most significant binary one. First we calculate how many integers there are with a binary zero in position (all these numbers are less than ) sharing no binary ones with . Then we calculate the same for with a binary zero in position . If has a binary one in position , then there are more such that and we are done. Otherwise, look for the next highest binary one in and repeat.
For example, if , then for we count all between and . For we will count all between and and for all between and .
Comments