排数等于每个循环节的长度的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。

 

【Code】

 

相关文章:

  • 2021-12-19
  • 2021-12-21
  • 2021-11-30
  • 2022-01-28
  • 2022-01-27
  • 2021-11-12
  • 2021-05-25
  • 2021-10-04
猜你喜欢
  • 2021-12-09
  • 2021-11-27
  • 2022-01-12
  • 2022-01-23
  • 2022-12-23
  • 2021-11-16
  • 2022-01-07
相关资源
相似解决方案