Editorial for DMPG '17 S3 - Black and White III
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Let us consider first the case where there is only black square. Unfolding a move produces
possible locations for the original square(s). Thus the number of possible original black squares after undoing
moves is
. The number of ways to select a non-empty subset of these
squares is
. Let
be the number of black squares in the original grid. Thus our final formula is
.
To compute , we can apply Fermat's Little Theorem, to get
.
Time Complexity: , where
, by using exponentiation by squaring to quickly compute the exponents.
Comments
Why is the mod
instead of
for
?
Notice FLT shows us that
for prime
where
is coprime to
. In this problem we have
and
. Since we wish to find
, notice
for some
, and since we know
, we know
, so it boils down to finding the
such that
, where
, and this is where you'd use your normal mod operator to find the remainder
.