1)对于 n >= 0 一个整数,从 0 到 n 的整数之和为 n*(n+1)/2。这是经典的:先这样写这个总和:S = 0 + 1 + ... + n 然后这样: S = n + (n-1) + ... + 0 你看到 2*S 是相等的到 (0+n) + (1 + n-1)) + ... + (n+0) = (n+1) n,所以确实 S = n (n+1)/2。(众所周知,但我更喜欢我的回答是独立的)。
2)从 1 开始,如果我们注意到 cons(m,n) 和 m+(m+1)+...(n-1)+n 正数(即 >=0)之间的整数的连续和,使得 1 <=m<=n 我们看到: cons(m,n) = (0+1+...+n) - (0+1+...+(m-1)) 从 1 给出: cons (m,n) = n*(n+1)/ - m(m-1)/2
3)然后将问题重新转换为以下内容:我们可以用多少种方式将 N 写成 N = cons(m,n) 和 m,n 整数,使得 1<=m<=n ?如果我们有 N = cons(m,n),这等价于 m^2 - m + (2N -n^2 -n) = 0,即实数多项式 T^2 - m + (2N -n ^2 -n) 有一个实根 m :它的判别式 delta 必须是一个正方形。但我们有:
delta = 1 - 3*(2*N - n^2 - n)
这个增量是一个整数,必须是一个正方形。因此存在一个整数 M 使得 :
delta = 1 - 3*(2*N - n^2 - n) = M^2
那是
M^2 = 1 - 6*N + n(n+1)
n(n+1) 总是可以被 2 整除(例如从一开始就是 S 的 2 倍,但这里有一个更微不足道的原因,在连续整数中,一个必须是偶数),因此 M^2 是奇数,这意味着M 一定是奇数。
4)将之前的等式改写为:
n^2 + n + (1-6*N - M^2) = 0
这表明实数多项式 X^2 + X + (1-6*N - M^2) 具有实数零 n :因此其判别式 gamma 必须是平方,但是:
gamma = 1 - 4*(1-6*N-M^2)
这必须是一个正方形,所以这里又存在一个整数 G 使得
G^2 = 1 - 4*(1-6*N-M^2)
G^2 = 1 + 4*(2*N + m*(m-1))
这表明,由于 M 是奇数,G 也是奇数。
5)将 M^2 = 1 - 4*(2*N - n*(n+1)) 减去 G^2 = 1 + 4*(2*N + m*(m-1))) 得到:
G^2 - M^2 = 4*(2*N + m*(m-1)) + 4*(2*N -n*(n+1))
= 16*N + 4*( m*(m-1) - n*(n+1) )
= 16*N - 8*N (because N = cons(m,n))
= 8*N
最后这可以重写为:
(G-M)*(G+M) = 8*N, that is
[(G-M)/2]*[(G+M)/2] = 2*N
其中 (GM)/2 和 (G+M)/2 是整数(GM 和 G+M 是偶数,因为 G 和 M 是奇数)
6)因此,在将 N 写为 cons(m,n) 的每种方式中,我们都可以将一种方式(并且只有一种方式,因为 M 和 G 是唯一确定的)将 2*N 分解为乘积 x*y,其中x = (GM)/2 和 y = (G+M)/2 其中 G 和 M 是两个奇数。由于 G = x + y 和 M = -x + y,因为 G 和 M 是奇数,我们看到 x 和 y 应该具有相反的奇偶性。因此,在 x 和 y 中,一个是偶数,另一个是奇数。因此 2*N = x*y 在 x 和 y 中,一个是偶数,另一个是奇数。令 c 为 x 和 y 中的奇数,d 为偶数。然后 2*N = c*d,因此 N = c*(d/2)。所以 c 是奇数除以 N,并且由 N 唯一确定,只要 N = cons(m,n)。反过来,只要 N 有一个奇数除数,就可以对所有这些东西进行逆向工程以找到 n 和 m。
7) *结论:N = cons(m,n) 的写法数(如我们所见,N 写成连续整数之和的写法数)和N 的奇数除数。 *
8)最后,我们要找的数是 n 的奇数除数。我猜想通过 DP 或其他方式解决这个问题比解决前一个问题更容易。