Аддитивная последовательность - PullRequest
1 голос
/ 27 октября 2011

аддитивная последовательность. 3,3,6,9,15 .... называется аддитивной последовательностью, в которой первые два числа должны быть одинаковыми. 3 + 3 = 6,3 + 6 = 9 и т. Д. Также число может быть разбито на одну или несколько цифр из аддитивной последовательности. Например: 12,122,436 ... В этой последовательности 12 + 12 = 24 .... 12 + 24 = 36. Вопрос задается начальным и конечным числами, найти все возможные члены в аддитивной последовательности. Я понимаю, что одну последовательность можно найти довольно легко. Но я понятия не имею, как принять во внимание большие числа, такие как 122 436 и т. Д.

1 Ответ

2 голосов
/ 05 апреля 2012

Ради простоты я скажу, что аддитивная последовательность является строгой, если числа не разбиваются.Строгие аддитивные последовательности имеют следующий вид: 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) таким же образом, как указано выше.

...