题目
问题描述
这是一道辣鸡提答题,传统题不会做的人不要激动,希望大家不要全程做提答题。
你有一个序列${s_i}$,满足$s_1 = 1$,且对于所有$x > 1$,存在$y \leq x - 1$,使得$sx = s{x - 1} + s_y$。
给定$k$,现在要你构造一个长度为$n$的序列使得$s_n = k$,并且$n$要求尽量小。
输入格式
所有输入数据tidati1.in~tidati10.in已在试题目录下。
一行一个正整数$k$, 含义如题意中所述。
输出格式
针对给定的$10$个输入文件tidati1.in~tidati10.in,你需要分别提交你的输出文件tidati1.out~tidati10.out。
第一行输出$n$,表示序列的长度。
接下来一行$n - 1$个正整数给出这个序列的生成规则,其中第$i$个数$j$表示$s_{i + 1} = s_i + s_j$。请注意按照题意$j \leq i$。
你输出的序列应满足$s_n = k$。
样例输入
7
样例输出
7
1 1 1 1 1 1
样例说明 1
你也可以输出:
5
1 1 1 3
这个输出比样例输出要优。
如何检测你的输出
如果你的输出不合法,则直接判$0$分,所以请仔细检查输出是否合法。
在试题目录下给出了$10$个判分文件tidati1.scores~tidati10.scores。每个判分文件均有$10$行$10$个单调递减的正整数,第$i$行的数表示如果要获得至少$i$分,$n$至多可以是多少。
注意最后一行的数不一定是最优解,只要你输出的𝑛不超过这个数即可获得该测试点的满分,更优的答案也不能多得分。