标签:一个 取整 利用 计算 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很少的事实,减少计算。
标签:一个 取整 利用 计算 str 约数 方案 答案 函数
原文地址:https://www.cnblogs.com/Miracevin/p/10261982.html