1678: 连续子段和
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:10
解决:1
题目描述
在数列中,求连续子段和是非常简单的,不是吗?但是我们如果己知数列和某个数 sum 求在数列中是否存在一个连续子段和与 sum 相等就不是那么容易了。今天你就需要来解决这个难题。
我们己知数列 2, 6, 12, 20, …, n*(n+1) 与和 sum,问在数列中是否存在这样一段连续子段,其和为 sum。
输入
输入每行一个 sum,sum 的值小于 1014。输入以 EOF 结束。
输出
对于每个 sum,第一行先输出满足条件的子段数目 s。以后 s 行每行输出两个数“A B”,中间用空格隔开,表示从数列第 A 项开始(数列第一项编号为 1),连续 B 个数的和。对于存在多个子段的,以 A 为升序进行输出。每个用例后输出一个空行。
样例输入 复制
90
5
174649748
样例输出 复制
1
9 1
0
2
286 532
452 399
提示
90 可以表示为从第九项(90)起连续一项的和。
在数列中任何一段的和都不可能为 5。
174649748 可以表示为两个连续子段的和。按起始项位置大小升序排列。