@ yosukesabai совершенно прав - это проблема цепи Маркова, и как только вы решите, как настроить матрицу переходов, ее очень легко решить. Если мы знаем, сколько роботов каждого возраста у нас имеется в конце каждой недели (в полных неделях, ограниченных 5), мы можем использовать матрицу переходов для расчета количества роботов каждого возраста в конце следующей недели.
Матрицу перехода можно записать так:
0 1 0 0 0 0
0 0 1 0 0 0
1 0 0 1 0 0
1 0 0 0 1 0
1 0 0 0 0 1
0 0 0 0 0 1
Для каждого робота возраста y в конце недели в конце следующей недели будет T (x, y) роботов возраста x (x = номер столбца, y = номер строки, оба начинаются с 0). Все записи заполняются в соответствии с описанием головоломки.
Исходным состоянием на неделе 0 является одиночный робот возраста 0, и никаких других роботов других возрастов нет. Это может быть представлено как вектор строки:
1 0 0 0 0 0
Теперь вы можете использовать функцию MMULT для перехода с нулевой недели на первую. Если вы поместите матрицу перехода в ячейки J2: O7 и вектор для недели 0 в ячейки B3: G3, ее можно ввести как:
=MMULT(B3:G3,$J$2:$O$7)
Это необходимо ввести как формулу массива. Выберите ячейки B4: G4, нажмите F2 , введите формулу и нажмите Ctrl + Shift + Enter . Теперь вы должны увидеть следующее в B4: G4:
0 1 0 0 0 0
Затем вы можете скопировать и вставить эти ячейки в следующие 103 строки, чтобы увидеть, какими роботами вы пользуетесь через 2 года. Я получаю 5 369 858 819 104 в конце недели 104.