hud4048
核武的思路:http://hi.baidu.com/aekdycoin/blog/item/69e075f5e200bcf47709d769.html
参考完核武报告,没完全懂~翻了翻组合数学书,这实质上就是求元素可重复的圆排列--许多组合数学书里讲莫比乌斯反演时唯一的例题~
先求 r 种不同元素,放在圆的n个点上 , 有几种放法, 旋转后相同算一种.
做法是:设周期为为d,d|n,的方案数是Td(r) 则 每个这样的圆排列,对应着d个线排列
线排列总数是r^n,所以:
莫比乌斯反演后:
总的方案数M_n就是各种周期的和:
因 d|k|n , 设k'=k/d . n'=n/d
注意到后面一部分和等于n'的欧拉函数,故Mn可以写成:
问题基本解决,剩下就是核武报告里说差不多,把最小公约数是i的倍数的方法数求出,容斥原理搞搞.
最后的答案应该是:
其中r_n表示重量是n的倍数的石子种数
mu(n) 和 phi(n) 都可以在预处理时筛出来,
n的分解只需要搞一遍就够了~
遗憾的是,还是很慢,board的第一名时空复杂度都比我写的好~ym