Ради простоты я скажу, что аддитивная последовательность является строгой, если числа не разбиваются.Строгие аддитивные последовательности имеют следующий вид: n * 1, n * 1, n * 2, n * 3, n * 5, ..., n * Fk, где Fk - k-е число Фибоначчи.Следовательно, для строгих последовательностей вам нужно разделить последний элемент на первый и проверить, является ли результат числом Фибоначчи.Если да, последовательность может быть легко восстановлена.Если нет, такой последовательности не существует.
Рассмотрим теперь нестрогие аддитивные последовательности, и пусть A1 ... An будет первым числом.Прежде всего, мы пытаемся найти строгую аддитивную последовательность, как описано выше.Если эта попытка не удалась и существует аддитивная последовательность, либо A1 ... An, либо последнее число должно представлять БОЛЬШЕ, чем одно "фактическое" число.
Если A1 ... An представляет более одного "фактического" числа, то существует k <= n такое, что A_1 + p = A_k + p для всех 0 <= p <= min (nk, k) (так как второе число должно быть равно первому).Если такого k не найдено, аддитивной последовательности не существует.Если такое k может быть найдено, попробуйте все числа вида A1 ... A_k-1 * F (m), где F (m) - это m-е число Фибоначчи, если это произведение меньше или равно последнемуномер, и попробуйте соответствовать последовательности.Если существует более одного такого k (111), попробуйте все возможности. </p>
Если последнее число представляет несколько чисел, а A1 ... An - нет, попробуйте все числа в форме A1 ... A_n * F(m) таким же образом, как указано выше.