数的分解:任何数都能分解成2的幂,比如
7=1+1+1+1+1+1+1
=1+1+1+1+1+2
=1+1+1+2+2
=1+2+2+2
=1+1+1+4
=1+2+4
求任意整数n(n<100亿)的此类划分数
假设结果为f(n),有递推公式f(2m+1)=f(2m),f(2m)=f(2m-1)+f(m),考虑分解中是否有1就很容易证明上述递推公式。
f(2m+1)=f(2m) ,奇数必然要拆分出1.
f(2m) = f(2m-1) + f(m),偶数如果拆分出1,那么就有f(2m-1)种方法,如果不拆分出1,那么拆分出的必然都是偶数,也就是说,拆分数相当于f(m)的每个拆分项乘以2.
其实由上面两个式子推出:
f(0)=f(1)=1
f(2m)=sigma(k from 0 to m)f(k)
但是对于这个求和公式不知道是否有直接公式。