#1396. 累加序列

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:Special Judge
上传者: MCPlayer542

题目描述

给定一个长为 的正整数序列 , , ,

定义 一次操作为:对于一个正整数 ,从前往后将变为

具体地,用C++代码实现如下:

for(int i=1;i<=n-k;++i) a[i]+=a[i+k];

你想让这个正整数序列在经历了不超过 次操作以后使得 变成 ,你想知道怎样的操作可以得到这样的结果。

输入格式

输入一个数,表示序列长度。

输出格式

第一行输出一个数,表示操作数个数。

第二行个数,表示每个操作的值。

样例

样例输入1

2

样例输出1

1
1

样例输入2

5

样例输出2

3
2 4 1

数据范围与提示

对于所有数据,

对第一组样例,进行一次的操作即可让的值变为,即为整个序列的和。

对于第二组样例,一开始正整数序列为 , , ,经历 操作后为 , , , , ,经历 操作后为 , , , , , 经历 操作后为 , , , , ,即为结果。

注意输出格式