#G2010. 连续之和

    ID: 1056 传统题 1000ms 512MiB 尝试: 2 已通过: 2 难度: 普及− 上传者: 标签>GESP二级多重循环枚举2026模拟

连续之和

题目描述

数学课上,老师发现 1515 可以写成好几种「连续正整数之和」:

15=1+2+3+4+5=4+5+6=7+815 = 1+2+3+4+5 = 4+5+6 = 7+8

现在给你一个正整数 nn,请你找出把 nn 写成至少两个连续正整数之和的所有方法。

输入格式

一行一个正整数 nn。

输出格式

第一行一个整数 kk,表示方法的总数。

接下来 kk 行,每行输出一种方法,格式为 n=a+(a+1)+...+b(具体见样例),中间不要有空格。各种方法按第一个加数从小到大的顺序输出。

如果没有任何方法,只输出一行 0。

样例 #1

样例输入 #1

15

样例输出 #1

3
15=1+2+3+4+5
15=4+5+6
15=7+8

样例 #2

样例输入 #2

8

样例输出 #2

0

样例解释

88 无法写成至少两个连续正整数之和,例如 3+4=73+4=7,4+5=94+5=9,1+2+3=61+2+3=6,2+3+4=92+3+4=9,都凑不出 88。

提示

数据范围

  • 对于 30%30\% 的数据:n≤100n \le 100;
  • 对于 60%60\% 的数据:n≤3000n \le 3000;
  • 对于 100%100\% 的数据:1≤n≤1051 \le n \le 10^5。

提示

  • 可以用一层循环枚举第一个加数 aa,再用一层循环从 aa 开始往后一个一个地累加。
  • 一旦累加的和已经超过 nn,再加下去只会更大,应该立刻用 break 结束内层循环,否则会超时。
  • 「至少两个」:只有 nn 自己一个数不算一种方法。