1. 程式人生 > >[CQOI2015]選數

[CQOI2015]選數

得到 限制 利用 一個 nbsp 個數 但是 最大 公約數

其實可以大力反演

然後得到式子。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]選數