题目描述:
任何正整数都能分解成2的幂,给定整数N,求N的此类划分方法的数量!
比如N = 7时,共有6种划分方法。
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(1 <= N <= 10^30)
输出
划分方法的数量
输入样例
7
输出样例
6
题解:
做法一(暴力)
令fnfn为nn分解方案数
- n is evenn is even
fn=fn−1+fn/2fn=fn−1+fn/2 - n is oddn is odd
fn=fn−1fn=fn−1
做法二
考虑将nn二进制分解,然后出现有效位分别为a1,a2,...,ama1,a2,...,am
将nn分解后,定义最小表示法为升序排列
nn的最小表示法,可以唯一地依次分段,和为2a1,2a2,2am2a1,2a2,2am
令fi,jfi,j为处理完aiai,