#1723. 数字的和

数字的和

题目描述:

在数学中,计算从自然数 a 到自然数 b(a < b)的连续自然数之和,可通过公式 Sum[a, b] = (a + b) × (b - a + 1) ÷ 2 快速求解。例如,计算 Sum[1, 4] 时,代入公式得 (1 + 4) × (4 - 1 + 1) ÷ 2 = 10,与直接累加 1 + 2 + 3 + 4 的结果一致。 本问题是该公式的 “逆问题”:已知连续自然数之和 n(n 为正整数,且 3 ≤ n ≤ 100000000),需要找出所有满足 Sum[a, b] = n 的自然数对 (a, b),并按 a 从小到大的顺序输出。

输入格式:

仅包含一行,为一个正整数 n(即已知的连续自然数和)。

输出格式:

将所有满足条件的自然数对 (a, b) 输出,每行输出一对,两个数之间用一个空格分隔。要求所有输出的数对按 a 从小到大的顺序排列,且题目保证输入的 n 至少存在一对满足条件的解。

样例:

100
9 16
18 22

提示

对于数对 (9, 16):连续自然数 9, 10, ..., 16 的和为 (9 + 16) × (16 - 9 + 1) ÷ 2 = 25 × 8 ÷ 2 = 100,符合 n = 100 的要求。 对于数对 (18, 22):连续自然数 18, 19, ..., 22 的和为 (18 + 22) × (22 - 18 + 1) ÷ 2 = 40 × 5 ÷ 2 = 100,同样符合要求。 且 9 < 18,因此按 a 从小到大顺序输出两对数。

【数据范围】

保证对于 100% 的数据, 3 <= n <= 100000000