Bitwise Recursion

Let $b(n)$ be the largest power of 2 that divides $n$. For example $b(24) = 8$.

Define the recursive function:
\begin{align*}
\begin{split}
A(0) &= 1\\
A(2n) &= 3A(n) + 5A\big(2n – b(n)\big) \qquad n \gt 0\\
A(2n+1) &= A(n)
\end{split}
\end{align*}
and let $H(t,r) = A\big((2^t+1)^r\big)$.

You are given $H(3,2) = A(81) = 636056$.

Find $H(10^{14}+31,62)$. Give your answer modulo $1\,000\,062\,031$.

This problem involves complex mathematical concepts and heavy computations. It would be almost impossible to do without the use of a computer or at least a sophisticated calculator. The rather big numbers and recursions also hint towards the use of coding to solve this problem.

First of all, we start by analyzing the function A(n). The function A(n) depends on the parity of n (whether it’s odd or even). In the case where n is odd, the recursion actually terminates as A(2n+1) = A(n), and this continues until n=0, where A(0) is defined as 1.

The case where n is even is more complicated. It defines A(n) as a relation between A(n) and the function with arguments smaller than n, which means that we’re interested in calculating $b(n)$. This is essentially asking the highest power of two that divides n, or in other words, the number of trailing zeros in the binary representation of n. This operation is fairly straightforward to compute in a language like Python with the built-in function bin(n).

The computation of this function for larger values of inputs requires a top-down dynamic programming approach, often referred to as ‘memoization’. Memoization is an optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and reusing them when the same inputs occur again.

The function H(t,r) is where it gets really interesting. H is defined as applying the function A to a certain power of two plus one, all raised to an exponent r. Here, again the calculations can get out of hand, so we need to optimize our computation in some way. A natural way to do this is to again apply memoization for our function A while computing H.

Finally, note that all of these computations must be done modulo 1,000,062,031. This means that we should reduce all of our computations modulo 1,000,062,031 to prevent overflow and to keep our numbers manageable.

All in all, the final computation for higher numbers is still something that needs to be done via computer program. Remember that the actual Python script or code to compute this would be a rather complex one and valid mostly for this specific problem, as the functions A and H are very narrowly defined for this problem. Also note that there might be a clever number theory trick that simplifies these computations significantly, but that requires a deep understanding of number theory and is outside the scope of this problem.

More Answers:
Reversible Prime Squares
Rational Recurrence Relation
XOR-Primes

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Share:

Recent Posts

Don't Miss Out! Sign Up Now!

Sign up now to get started for free!