Bzoj3930: [CQOI 2015] 选数 & COGS2699: [CQOI 2015] 选数加强版
2018-01-17 15:20
411 查看
题面
BzojCOGS加强版
Sol
非加强版可以枚举AC这里不再讲述设f(i)表示在[L,H]取N个,gcd为i的方案数
F(i)=∑i|df(d)表示[L,H]取N个,gcd为i的倍数的方案数
易得F(i)=(⌊Hi⌋−⌊L−1i⌋)N
直接莫比乌斯反演得到f(K)=∑K|dμ(dK)F(d)
把dK替换掉f(K)=∑⌊HK⌋i=1μ(i)F(K∗i)
分块F(K∗i)杜教筛出μ的前缀和就可以了
# include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const int _(1e6 + 1), Zsy(1e9 + 7); IL ll Read(){ RG ll x = 0, z = 1; RG char c = getchar(); for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1; for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48); return x * z; } int prime[_], mu[_], s[_], num, L, H, N, K, MAXN; map <int, int> Mu; bool isprime[_]; IL ll Pow(RG ll x, RG ll y){ RG ll ret = 1; for(; y; y >>= 1, x = x * x % Zsy) if(y & 1) ret = ret * x % Zsy; return ret; } IL void Prepare(){ isprime[1] = 1; mu[1] = 1; for(RG int i = 2; i < MAXN; ++i){ if(!isprime[i]){ prime[++num] = i; mu[i] = -1; } for(RG int j = 1; j <= num && i * prime[j] < MAXN; ++j){ isprime[i * prime[j]] = 1; if(i % prime[j]) mu[i * prime[j]] = -mu[i]; else{ mu[i * prime[j]] = 0; break; } } mu[i] += mu[i - 1]; } } IL int SumMu(RG int n){ if(n < MAXN) return mu ; if(Mu ) return Mu ; RG int ans = 1; for(RG int i = 2, j; i <= n; i = j + 1){ j = n / (n / i); ans -= 1LL * (j - i + 1) * SumMu(n / i) % Zsy; ans = (ans + Zsy) % Zsy; } return Mu = ans; } int main(RG int argc, RG char* argv[]){ N = Read(); K = Read(); L = (Read() - 1) / K; H = Read() / K; RG int ans = 0, lst = 0, now; MAXN = min(H + 1, _); Prepare(); for(RG int i = 1, j; i <= H; i = j + 1){ j = H / (H / i); if(L / i) j = min(j, L / (L / i)); now = SumMu(j); ans += 1LL * (now - lst) * Pow(H / i - L / i, N) % Zsy; ans = (ans % Zsy + Zsy) % Zsy; lst = now; } printf("%d\n", ans); return 0; }
相关文章推荐
- Bzoj3930: [CQOI 2015] 选数 & COGS2699: [CQOI 2015] 选数加强版
- 【反演复习计划】【COGS2433】&&【bzoj3930,CQOI2015选数】爱蜜莉雅的冰魔法
- [BZOJ3930] [CQOI2015]选数 && 递推
- BZOJ 3930 [CQOI2015]选数 & 51nod 1244 莫比乌斯函数之和 & BZOJ 2301
- 【BZOJ3930】【CQOI2015】选数(递推 & 莫比乌斯反演)
- luogu3172 && bzoj3930 [CQOI2015]选数
- BZOJ3930 [CQOI2015]选数
- BZOJ 3930 【CQOI2015】 选数
- [CQOI2015]&[bzoj3933]多项式 二项式定理+高精度
- bzoj3930 [CQOI2015]选数
- [BZOJ3930][CQOI2015]选数(数论+容斥)
- bzoj 3930: [CQOI2015]选数
- 【BZOJ】3930: [CQOI2015]选数
- BZOJ 3930 CQOI2015 选数 莫比乌斯反演
- 【BZOJ3930】[CQOI2015]选数 莫比乌斯反演
- 【bzoj3930】[CQOI2015]选数 莫比乌斯反演+杜教筛
- 【bzoj4325】NOIP2015 斗地主(&“加强”版) 搜索
- [BZOJ3930][CQOI2015]选数(莫比乌斯反演+杜教筛)
- BZOJ3930: [CQOI2015]选数
- bzoj 3930: [CQOI2015]选数 (杜教筛+反演)