题意
做法一(暴力)
令(f_n)为(n)分解方案数
- (n~is~even)
(f_n=f_{n-1}+f_{n/2}) - (n~is~odd)
(f_n=f_{n-1})
做法二
考虑将(n)二进制分解,然后出现有效位分别为(a_1,a_2,...,a_m)
将(n)分解后,定义最小表示法为升序排列
(n)的最小表示法,可以唯一地依次分段,和为(2^{a_1},2^{a_2},2^{a_m})
令(f_{i,j})为处理完(a_i),最大数为(2^j)
令(g_{i,j})为处理(2^i),最大数为(2^j)
[egin{aligned}\
&f_{1,j}=g_{a_1,j},g_{i,i}=1\
&f_{i,j}=sumlimits_{k=0}^j f_{i-1,k} imes g_{a_i-k,j-k}(i
eq 1)\
&g_{i,j}=sumlimits_{k=0}f_{i-1,k} imes f_{i-1-k,j-k}(j
eq i)\
end{aligned}]
要写高精