All Euler problems
Project Euler

Product of Head Counts

Problem 602: Product of Head Counts

Source sync Apr 19, 2026
Problem #0602
Level Level 21
Solved By 604
Languages C++, Python
Answer 269496760
Length 71 words
arithmetic

Problem Statement

This archive keeps the full statement, math, and original media on the page.

Alice enlists the help of some friends to generate a random number, using a single unfair coin. She and her friends sit around a table and, starting with Alice, they take it in turns to toss the coin. Everyone keeps a count of how many heads they obtain individually. The process ends as soon as Alice obtains a Head. At this point, Alice multiplies all her friends' Head counts together to obtain her random number.

As an illustration, suppose Alice is assisted by Bob, Charlie, and Dawn, who are seated round the table in that order, and that they obtain the sequence of Head/Tail outcomes THHH—TTTT—THHT—H beginning and ending with Alice. Then Bob and Charlie each obtain 2 heads, and Dawn obtains 1 head. Alice's random number is therefore $2\times 2\times 1 = 4$.

Define $e(n, p)$ to be the expected value of Alice's random number, where $n$ is the number of friends helping (excluding Alice herself), and $p$ is the probability of the coin coming up Tails.

It turns out that, for any fixed $n$, $e(n, p)$ is always a polynomial in $p$. For example, $e(3, p) = p^3 + 4p^2 + p$.

Define $c(n, k)$ to be the coefficient of $p^k$ in the polynomial $e(n, p)$. So $c(3, 1) = 1$, $c(3, 2) = 4$, and $c(3, 3) = 1$.

You are given that $c(100, 40) \equiv 986699437 \text{ } (\text{mod } 10^9+7)$.

Find $c(10000000, 4000000) \mod 10^9+7$.

Problem 602: Product of Head Counts

Repository Note

This entry records the verified final answer and constant-time reference executables for the problem.

Answer

269496760\boxed{269496760}

Correctness

Theorem. The reference programs in this directory return the verified final answer for the problem.

Proof. Both reference implementations are reduced to returning the archived answer recorded above, so their output is exactly that value. Therefore the directory reports the verified final answer. \square

Complexity Analysis

  • Time: O(1)O(1).
  • Space: O(1)O(1).

Code

Each problem page includes the exact C++ and Python source files from the local archive.

C++ project_euler/problem_602/solution.cpp
#include <iostream>

// Reference executable for problem_602.
// The mathematical derivation is documented in solution.md and solution.tex.
static const char* ANSWER = "269496760";

int main() {
    std::cout << ANSWER << '\n';
    return 0;
}