Editorial for Bubble Cup V9 E Festival organization
Submitting an official solution before solving the problem yourself is a bannable offence.
It is easy to prove that the answer for the query is , where
are Fibonacci numbers. Let's notice, that
is a polynomial for
and can be expressed in the form
. Knowing this, we can express the answer in a different way:
Thus we reduced our problem to computing the sum of powers of Fibonacci numbers. To do so we will refer to Binet's formula:
The inner sum is almost always a geometric progression with and
, except for the cases when
, but we may avoid any special cases by computing it in a way similar to binary exponentiation.
Indeed, in order to compute , we may start with computing
and
. Two sums with
and
elements can be merged together in the following way:
Thus we can compute the sum of powers only with additions and multiplications. The only difficulty is that there is
present in these formulas (in
and
) and there is no such number modulo
. The solution to this is simple: let's never specify an exact value for it. This way we will always work with numbers of the form
. The addition and multiplication of these numbers is fairly easy:
These are the only operations that we require. The sum of Fibonacci numbers (which are integers) is also an integer, so the final result will never contain any . Thus we have solved this problem.
Comments