添加序列

时间:2011-10-27 05:01:06

标签: logic sequence

添加剂序列。 3,3,6,9,15 ....被称为加法序列,其中前两个数字必须相同.3 + 3 = 6,3 + 6 = 9,依此类推。 此外,数字可以从加法序列中分成多个数字。 例如:12,122,436 ...在该序列中,12 + 12 = 24 ...... 12 + 24 = 36。 问题是给出起始和结束数字,找到添加剂序列中的所有可能的术语。 我知道可以很容易地找到一个序列。但是我不知道如何考虑像122,436等更大的数字。

1 个答案:

答案 0 :(得分:2)

为了简单起见,我会说如果没有数字被分割,则加法序列是严格的。严格的加法序列具有以下形式:n * 1,n * 1,n * 2,n * 3,n * 5,...,n * Fk,其中Fk是第k个斐波那契数。因此,对于严格序列,您需要将最后一个元素除以第一个元素,并检查结果是否为斐波纳契数。如果是,则可以容易地重建序列。如果不是,则不存在这样的序列。

现在让我们考虑非严格的加法序列,让A1 ... An是第一个数字。首先,我们试图找到严格的添加序列,如上所述。如果此尝试失败并且存在附加序列,则A1 ... An或最后一个数字应代表MORE然后一个“实际”数字。

如果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)尝试所有可能性。

如果最后一个数字代表多个数字而A1 ... An没有,请按照与上述相同的方式尝试A1 ... A_n * F(m)形式的所有数字。