Fibonacci 拆分

发布时间 2024-01-08 19:15:45作者: pidan007

任意一个正整数 \(n\) 都可以被表示成若干不同斐波那契数之和

考虑数学归纳证明:

\(n=1\) 显然成立

假设对于任意 \(x\le n\) 都成立,对于 \(n+1\)

  • 若是 \(fibonacci\) 数显然成立
  • 否则,设 \(fib_i<n+1<fib_{i+1}\),即 \(0<n+1-fib_i<fib_{i+1}-fib_i=fib_{i-1}\),根据假设,\(n+1-fib_i\le n\),因此可以被表示成若干不同斐波那契数之和,而 \(fib_{i-1}<fib_i\),所以 \(n+1\) 的表示可以由 \(n+1-fib_i\) 的表示加上 \(fib_i\) 得到

证毕

更强的结论:对于一个严格递增的数列 \(\{a\}\),令 \({S}\)\({a}\) 的前缀和数列

\[\begin{array}{l} a_0=1\\ \forall x\ge 1,S_{x-1}+1\ge a_x\\ \end{array} \]

是任意一个正整数都可以被表示成数列 \(\{a\}\) 中若干不同数之和的充要条件

并且有:如果 \(n\le\sum\limits_{i=0}^xa_i\),则 \(n\) 总能被表示成 \(\{a_0,a_1,\dots,a_i\}\) 中若干不同数之和

充分性:类似于上面的,\(n=1\) 显然成立

假设对于任意 \(x\le n\) 都成立,对于 \(n+1\)

  • \(\exists i,n+1=S_i\),显然成立
  • 否则,设 \(S_i<n+1<S_{i+1}\),由于 \(S_i+1\le a_{i+1}\),所以 \(a_{i+1}\le n+1\)
    • \(n+1=a_{i+1}\) 显然成立
    • 否则,\(a_{i+1}<n+1<S_{i+1}\),即 \(0<n+1-a{i+1}<S_i\),根据假设,\(S_i\le n\),因此 \(n+1-a_{i+1}\) 可以被表示成 \(\{a_0,a_1,\dots,a_i\}\) 中若干个不同数之和,而数列 \(\{a\}\) 严格递增,所以 \(n+1\) 的表示可以由 \(n+1-a_i\) 的表示加上 \(a_i\) 得到

必要性:若 \(\exists i\ge 1,S_{i-1}+1<a_i\),则 \(S_{i-1}+1\) 无法被表示成数列 \(\{a\}\) 中若干不同数之和