2483: TooY0ung的等差数列(语法周赛 Round 13(简单场))

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:21 解决:9

题目描述

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

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

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

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

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

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

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

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

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

现在, TooY0ung 给出一个数字 X ,请你输出一个等差数列,使得该等差数列的和为 X 。


输入

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

输出

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

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

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

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


样例输入 复制

6

样例输出 复制

3
1 2 3

提示

6 
3
1 2 3 
  36 

8 1 2 3 4 5 6 7 8  6 1 3 5 7 9 11  3 1 12 23

数据规模与约定

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

  • 子任务 1(30 分):保证输入的 X 是 9,16,25,36 中的一个数字
  • 子任务 2(30 分):保证输入的 X 是正数。
  • 子任务 3(40 分):没有特殊限制。
  • (原题目过于简单,只要分成两个数就过100分,为加强编程,现补充说明:)
  • 数列的数量不少于3个,这样才符合数列的意思;
  • 正数规定从1开始数列,负数从-1开始数列;
  • 输出的解从多到时少;
  • 输出所有的可能的解;
  • 数据范围调整为-10000000到10000000之间;

来源/分类