BZOJ-1025 游戏
排数等于每个循环节的长度的lcm+1
也就是说我们要求出一列数(a1,a2,a3,a4……)的lcm有多少种(保证数的总和为N)
设lcm为C,则将C分解质因数:C=a1^x1+a2^x2+a3^x3……
易证(a1^x1,a2^x2,a3^x3……)为符合lcm=C的总和最小的情况
所以我们先筛素数,然后w[i,j]表示总和为i,且其中的数的最大质因数不大于Prime[j]
DP方程:w[i,j]=w[i][j-1]+∑w[i-Prime[j]^k][j-1](i>=Prime[j]^k)
记得边界问题和int64。