题意
51nod
做法一(暴力)
令\(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\)
\[\begin{aligned}\&f_{1,j}=g_{a_1,j},g_{i,i}=1\&f_{i,j}=\sum\limits_{k=0}^j f_{i-1,k}\times g_{a_i-k,j-k}(i\neq 1)\&g_{i,j}=\sum\limits_{k=0}f_{i-1,k}\times f_{i-1-k,j-k}(j\neq i)\\end{aligned}\]
要写高精
51nod1048
原文:https://www.cnblogs.com/Grice/p/12780612.html