首先,我们分析一下题目。
1~n1~n1~n的数字,怎么样才能拼接到最多呢?
利用等差数列的原理
我们按照等差数列的原理:
1+2+3...+n=1 + 2 + 3 ... + n =1+2+3...+n= (1+n)∗n/2*n/2∗n/2
看到没?
看到没?
是不是一个固定数*n/2?
再解释一下:
1+2+3...+n=(1+n)+(2+n−1)...+(n/2+n/2+1)=(1+n)+(1+n)...(1+n)1 + 2 + 3 ... + n = (1 + n) + (2 + n - 1) ... + (n/2 + n/2+1) = (1 + n) + (1 + n) ... (1 + n)1+2+3...+n=(1+n)+(2+n−1)...+(n/2+n/2+1)=(1+n)+(1+n)...(1+n)
那么,有几个(1+n)(1 + n)(1+n)呢?这是这题的关键。
第一个对应最后一个
第二个对应倒数第二个
111 ~ nnn分成XXX个子序列,每个子序列的长度为2,求XXX。
n/X=2n / X = 2n/X=2,接下来就是简单的解方程了。我们很容易算出,X=n/2X = n/2X=n/2。
而奇数呢?(1+n)+(2+n−1)...n/2(1 + n) + (2 + n-1) ... n / 2(1+n)+(2+n−1)...n/2,我们只要这样:
把奇数分成(1+2+3...+n−1)+n=(1+n−1)∗n/2+n=n∗n/2+n(1 + 2 + 3 ... + n-1) + n = (1+n-1)*n/2+n = n*n/2+n(1+2+3...+n−1)+n=(1+n−1)∗n/2+n=n∗n/2+n
这不就能解了?奇数就是n∗(n/2+1)n*(n/2+1)n∗(n/2+1)
所以,我们直接这样解。