BZOJ 2301 Problem b(莫比乌斯函数)】的更多相关文章

这道题和 HDU-1695不同的是,a,c不一定是1了.还是莫比乌斯的套路,加上容斥求结果. 设\(F(n,m,k)\)为满足\(gcd(i,j)=k(1\leq i\leq n,1\leq j\leq m)\)的对数.则\(ans = F(b,d,k)-F(a-1,d,k)-F(c-1,b,k)+F(a-1,c-1,k)\) 预处理莫比乌斯函数的前缀和,分块加速求和即可 #include<bits/stdc++.h> using namespace std; typedef long lon…
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数n,接下来n行每行五个整数,分别表示a.b.c.d.k Output 共n行,每行一个整数表示满足要求的数对(x,y)的个数 Sample Input 2 2 5 1 5 1 1 5 1 5 2 Sample Output 14 3 HINT 100%的数据满足:1≤n≤50000,1≤a≤b≤50…
http://www.lydsy.com/JudgeOnline/problem.php?id=2301 题意:给a,b,c,d,k,求gcd(x,y)==k的个数(a<=x<=b,c<=y<=d) 思路:假设F(a,b)代表gcd(x,y)==k 的个数(1<=x<=a,1<=y<=b) 那么这是满足区间加减的 ans=F(b,d)-F(b,c)-F(a,d)+F(a,c) 剩下的就和Zap一样了 #include<algorithm> #in…
首先我们来看一道题  BZOJ 2301 Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数n,接下来n行每行五个整数,分别表示a.b.c.d.k Output 共n行,每行一个整数表示满足要求的数对(x,y)的个数 Sample Input 2 2 5 1 5 1 1 5 1 5 2 Sample Output 14 3 HI…
题目 题意:第Ki 个不是完全平方数的正整数倍的数. 对于一个数t,t以内的数里的非完全平方数倍数的个数:num=1的倍数的数量−一个质数平方数(9,25,49...)的倍数的数量+两个质数的积平方数(36,100,225...)的数量−三个质数balabala-- 所以   (然而这一坨是怎么推出来的呢?) u(i)就是莫比乌斯函数 求莫比乌斯函数代码: //递推 ll mu[100005]; void mobius(ll mn) { mu[1]=1; for(ll i=1;i<=mn;i++…
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2301 题意:每次给出a,b,c,d,K.求有多少数对(x,y)满足a<=x<=b,c<=y<=d且Gcd(x,y)=K? 思路: i64 mou[N];i64 a,b,c,d,k; void init(){    i64 i,j;    for(i=2;i<N;i++) if(!mou[i])    {        mou[i]=i;        for(j=i…
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37166 题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 思路:本题使用莫比乌斯反演要利用分块来优化,那么每次询问的复杂度降为2*sqrt(n)+2*sqrt(m).注意到 n/i ,在连续的k区间内存在,n/i=n/(i+k).所有对这连续的区间可以一次求出…
2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MB Submit: 7732  Solved: 3750 [Submit][Status][Discuss] Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000…
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2301 冬令营听了莫比乌斯,这就是宋老师上课讲的例题咯[今天来实现一下] #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline int in(){ ;char ch=getchar(); ') ch=getchar(); +ch-',ch=getchar…
一道杜教筛的板子题. 两个都是积性函数,所以做法是一样的.以mu为例,设\( f(n)=\sum_{d|n}\mu(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\mu(i) \),然后很显然对于mu\( g(n)=1\),对于phi\( g(n)=n*(n+1)/2 \),然后可以这样转化一下: \[ g(n)=\sum_{i=1}^{n}\sum_{d|n}\mu(d) \] \[ =\sum_{d=1}^{n}\mu(d)\left \lflo…