BZOJ_3930_选数[Number]

About Problem

Solve

  • 首先定义状态 f[i] 为在区间 [l , r] 中,选 n 个数,这 n 个数的 gdc 为 i*k 的方案数。
    那么在 [1 , l] 中一共有⌈l / (i*k)⌉ 个 i*k 的倍数,同理有 r / (i*k) 个 i*k 的倍数在 [1 , r] 之间。
    设 a = ⌈l / (i*k)⌉, b = r / (i*k)
    所以一共的方案数为 (b-a+1)^n。
  • 但这中间会有一部分不合法的方案,例如:

1.设 k∈[l , r],那么会选出 {k,k,k,k...k,k,k} (n 个 k 这样的集合,这很显然是不合法的=.=)
所以一共要去掉 (b-a+1) 个方案。
2.k*2*i 是 ki 的倍数,k*4*i 也是 ki 的倍数,但这两个的 gcd 明显不是 ki 而是 2ki,所以显而易见要把gcd为 2ki,3ki,4ki,5ki ... 的余数给去掉
在去重的过程中不会出现第二种情况包含第一种情况,因为 gcd 为 2ki 的方案中也不会包含重复出现的形如 {x,x,x...,x,x}(n 个 x,且 2ki|x ),所以第二种情况去掉的只是新添加的情况[不知道你们看不看得懂,,,反正我是看不懂自己写的,反正就是情况2和情况1不会有交集吧]

综上:


Windows下的公式丑,不要介意><

Maxn可以任选(当然如果你有闲心推一下上界的话也不错,记得在评论里告诉我ZZZ,我很懒,所以我是蒟蒻)
各位大神 OOOOrrrzz

代码:Github传送门 嗖~

当然这道题的正解貌似是莫比乌斯反演,然而我还懒得学=.=有时间再看一下吧,在友链中贴出一个我认为写得好的的Blog,有兴趣的可以看一下。

友链:

思路来源:http://www.cnblogs.com/tuigou/p/4620242.html
莫比乌斯反演:http://blog.csdn.net/popoqqq/article/details/44917831
犇OOOOrrrzz

----------------------------------------------- gdjs2 --------------
--------------------------------------------- 2016.3.13 ------------

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • sì 支zhī茶chá 对duì 酒jiǔ,赋fù 对duì 诗shī,燕yàn子zi 对duì 莺yīng 儿é...
    每个人的孟母堂阅读 1,281评论 0 6
  • 一年级语文上册生字表 生字表一(共400字) 啊(ā)爱(ài)安(ān)岸(àn)爸(bà)八(bā)巴(bā)...
    meychang阅读 2,908评论 0 6
  • 1 谚语:狐狸吃不到葡萄说葡萄酸,如果换成遇到困难就放弃,还说各种原因。恐...
    奶爸阿奇阅读 295评论 0 0
  • 我们生活中的自来水硬度大,每天用自来水洗澡,洗头,时间长了洗出来的头发涩,硬,我发现了一个非常简单,实用的洗发方法...
    兰岚阅读 12,174评论 0 2
  • 618,打响的不仅是京东和阿里买买买的对垒之战,还是我的最后两周冲刺 每年两次的大促销,老公提醒着我,有东西要买,...
    萌米酱阅读 246评论 0 0