码迷,mamicode.com
首页 > 其他好文 > 详细

[CQOI2015]选数

时间:2019-01-13 10:58:21      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:一个   取整   利用   计算   str   约数   方案   答案   函数   

其实可以大力反演

然后得到式子。miu函数可以用杜教筛求,然后整数分块。虽然3000组询问,,,理论一组都过不去,,,但是杜教筛还是越用越快的,可以过

(太暴力了)

 

题目一个关键的条件:H-L<=1e5

可以不可以把枚举公约数的范围限制在H-L之间呢?

其实有用的gcd不多

如果所有n个数都相等,那么有H-L+1种

如果不全都相等,那么最大的gcd,是H-L+1!!!也只有H-L+1种了。

简单起见

令:H->[H/K]下取整,L->[L/K]上取整

设f[i]表示,选择N个不全相等的数,最大公约数为i的方案数

答案就是f[1](因为全相等gcd一定不为1,不在答案内。L=1特判+1)

这样的话,i的范围就是1~H-L+1了

设x是[L,H]中是i倍数的个数,容斥:f[i]=x^N-x-f[2*i]-f[3*i]-...

所以倒推i即可。

O(lenlog(len))

 

利用gcd很少的事实,减少计算。

[CQOI2015]选数

标签:一个   取整   利用   计算   str   约数   方案   答案   函数   

原文地址:https://www.cnblogs.com/Miracevin/p/10261982.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!