P97307

斐波那契分解(fibonacci)

难度 未定
讨论 统计 61通过 166提交 36.7%通过率 旧版界面
时间限制 1 秒 内存限制 128 MB

题目描述

题目背景

斐波那契分解(Fibonacci decomposition),通常也叫 Zeckendorf 定理 或 Zeckendorf 表示,是组合数论里一个很经典的结果,即任何正整数都可以唯一地表示成若干个不相邻的斐波那契数之和。

题目描述

斐波那契数列是这样的一个数列,并满足如下递推式(n是正整数):

f\left(n\right)=\left{\begin{aligned}1,\ \  n\leq 2 \ f\left(n-1\right)+f\left(n-2\right),\ \  n\geq 3\end{aligned}\right.

输入一个正整数x,把它表示成若干个不相连的斐波那契数之和。

提示:每次找到不超过这个正整数x的最大斐波那契数,然后x减去那个数值后继续求解。

输入

输入仅一个数字,即那个正整数x。

输出

输出仅一行,包含若干个斐波那契数,从大到小输出,它们不是相邻的斐波那契数,且和为输入的正整数n。

样例

样例 1
输入
20
输出
13 5 2
样例 2
输入
21
输出
21

提示

样例1解释

斐波那契数列为:1 1 2 3 5 8 13 21……。

20=13+5+2。且2、5、13不是相邻的斐波那契数。

样例2解释

斐波那契数列为:1 1 2 3 5 8 13 21……。21本身就是斐波那契数,当然它也可以表示成21=8+13。但是8和13是相邻的斐波那契数。

数据范围

对于所有测试数据有:1\leq x\leq {10}^{18}。 |测试点| x≤| |-----|-----| |1~3| {10}^{3}| |4~6| {10}^{9}| |7~10| {10}^{18}|

来源

2026第五届青少年编程挑战精英赛

Tab 缩进 · 提交后可在下方查看评测状态
请先登录后再提交