#A0405. 等差数列

等差数列

题目描述

最近 Mr.Zhang 风评被害,学生们老是觉得 Mr.Zhang 是毒瘤出题人。

是时候挽回一下自己的良心出题人名声了。

数列,指的就是一串数字,数字的数量需要大于等于 11

等差数列是数列中极为特殊的一种数列,他的规律是相邻数字的差都相等。

比如,135791,3,5,7,9 就是一个很经典的等差数列,他们的公差为 22 。 公差指的就是相邻数字的差,由于所有相邻数字的差都一样,所以这个差是公共的,我们称其为公差。

其实这个东西同学们都学过,比如同学们小学都学过,如何计算 1+2+3+4+...+1001+2+3+4+...+100 的和,这其实就是著名的高斯求和问题。

算前 100100 数字的和就是 (1+100)100/2( 1+100)*100/2 == 50505050

我们称等差数列中的第一项为首项,最后一项为末项,数列中的数字个数为项数。

求等差数列和的公式其实就是首项与末项的和 * 项数再除以2

现在, Mr.Zhang 给出一个数字 XX ,请你输出一个等差数列,使得该等差数列的和为 XX

输入格式

一行一个整数 XX。输入数据保证有解。

输出格式

输出包含两行,第一行输出一个数字 nn ,表示等差数列的长度(项数)。

注意 nn 不能太大,否则会导致输出超限、超时或运行时错误。

第二行输出一行在 int 范围内的数字,代表该等差数列。

答案不一定唯一,没关系,良心的 Mr.Zhang 会检测你的数列是否正确!

6
3
1 2 3
25
5
1 3 5 7 9

数据规模与约定

对于 100%100\% 的数据,保证 XX 在 int 范围内,即231X2311-2^{31} \le X \le 2^{31}-1 ,输入数据保证有解。

  • 子任务 1(30 分):保证输入的 XX91625369,16,25,36 中的一个数字
  • 子任务 2(30 分):保证输入的 XX 是正数。
  • 子任务 3(40 分):没有特殊限制。