bzoj 2301 莫比乌斯反演
对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。
这里题目意思很明显
对于要求的f[n] = sigma (a≤x≤b) sigma(c≤y≤d) [gcd(x,y)=k] = sigma (1≤x≤b) sigma(1≤y≤d) [gcd(x,y)=k] + sigma (1≤x≤a-1) sigma(1≤y≤c-1) [gcd(x,y)=k] - sigma (1≤x≤a-1) sigma(1≤y≤d) [gcd(x,y)=k] - sigma (1≤x≤b) sigma(1≤y≤c-1) [gcd(x,y)=k]
对于每一个g[n] = sigma(1≤x≤a) sigma(1≤y≤c) [gcd(x,y)=k] = sigma(1≤x≤a/k) sigma(1≤y≤c/k) [gcd(x,y)=1] = sigma(1≤x≤a/k) sigma(1≤y≤c/k) sigma(d|gcd(x,y)) mu[d] = sigma(d) mu[d]*a/k/d*c/k/d
a/k/d*c/k/d 这一段区间相等的部分可以加在一起算,得到当前一样值的结束是 min(x/(x/i) , y/(y/i))
记录莫比乌斯函数的前缀和就可以整段区间更新,这样循环就缩小到了sqrt(n)的复杂度
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 50000
int mu[N+] , prime[N+] , tot , sum[N+];
bool check[N+]; void get_mu()
{
mu[] = ;
for(int i= ; i<=N ; i++){
if(!check[i]){
prime[tot++] = i;
mu[i] = -;
}
for(int j= ; j<tot ; j++){
if((ll)i*prime[j]>N) break;
check[i*prime[j]] = true;
if(i%prime[j]){
mu[i*prime[j]] = -mu[i];
}else break;
}
}
for(int i= ; i<=N ; i++) sum[i]=sum[i-]+mu[i];
} int a,b,c,d,k; int solve(int x , int y)
{
x/=k , y/=k;
int mx = min(x , y) , len , ret=;
for(int i= ; i<=mx ; i=len+)
{
// cout<<i<<" "<<ret<<endl;
len = min(x/(x/i) , y/(y/i));
ret += x/i*(y/i)*(sum[len]-sum[i-]);
}
return ret;
} int main()
{
//freopen("in.txt" , "r" , stdin);
get_mu();
int T;
scanf("%d" , &T);
while(T--){
scanf("%d%d%d%d%d" , &a , &b , &c , &d , &k);
printf("%d\n" , solve(b,d)+solve(a-,c-)-solve(a-,d)-solve(b,c-));
}
return ;
}
bzoj 2301 莫比乌斯反演的更多相关文章
- BZOJ 2301 莫比乌斯反演入门
2301: [HAOI2011]Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函 ...
- 【题解】Crash的数字表格 BZOJ 2154 莫比乌斯反演
题目传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=2154 人生中第一道自己做出来的莫比乌斯反演 人生中第一篇用LaTeX写数学公式的博客 大 ...
- BZOJ 3309 莫比乌斯反演
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3309 题意:定义f(n)为n所含质因子的最大幂指数,求 $Ans=\sum _{i=1} ...
- bzoj 2154 莫比乌斯反演求lcm的和
题目大意: 表格中每一个位置(i,j)填的值是lcm(i,j) , 求n*m的表格值有多大 论文贾志鹏线性筛中过程讲的很好 最后的逆元我利用的是欧拉定理求解的 我这个最后线性扫了一遍,勉强过了,效率不 ...
- bzoj 1101 莫比乌斯反演
最裸的莫比乌斯 #include<bits/stdc++.h> #define LL long long #define fi first #define se second #defin ...
- bzoj 2820 莫比乌斯反演
搞了一整个晚自习,只是看懂了dalao们的博客,目前感觉没有思路-.还是要多切题 next day: 刚才又推了一遍,发现顺过来了,hahaha #include<cstdio> #inc ...
- HYSBZ - 2301 莫比乌斯反演
链接 题解:直接用公式算,用容斥来减掉重复计算的部分 但是我犯了一个非常sb的错误,直接把abcd除k了,这样算a-1的时候就错了,然后举的例子刚好还没问题= = ,结果wa了好几发 //#pragm ...
- BZOJ - 2818 莫比乌斯反演 初步
要使用分块的技巧 #include<iostream> #include<algorithm> #include<cstdio> #include<cstri ...
- bzoj 2671 莫比乌斯反演
Calc Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 451 Solved: 234[Submit][Status][Discuss] Descr ...
随机推荐
- 用Volley让GridView加载网络图片
一.布局文件 总共两个布局文件,一个是GridView,还有一个是GridView的item,是NetworkImageView和TextView activity_main.xml <Rela ...
- js object(对象)
http://www.cnblogs.com/pingchuanxin/p/5773326.html Object(对象)是在所有的编程语言中都十分重要的一个概念,对于事物我们可以把他们看作是一个对象 ...
- iOS之Scanning的实现
http://i.cnblogs.com/EditPosts.aspx?postid=5288517 //写在最前 /* AVFoundation原生框架的好处就是扫描特别快效率特别高,但是可能会遇到 ...
- 修改jsp文件tomcat发布失败(Could not delete May be locked by another process)
突然项目修改jsp文件后,tomcat不能发布, Publishing failed with multiple errors Could not delete D:/Tomcat 6.0/web ...
- Java Performance - 如何调查解决内存问题
JVM 的内存溢出/不足/OutOfMemoryError/垃圾收集恶性循环是需要解决,又是屡见不鲜的问题. 建议阅读官方的 Troubleshooting Guide for Java SE 6 w ...
- Hbase之获取数据
import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache ...
- DialogFragment 自定义弹窗
layout文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:a ...
- The Network Adapter could not establish the connection问题研究
最近一个项目会报上述错误,但也不是经常发生,所以很难跟踪,影响不是很大,但每次看到日志中这个错误就会不舒服,还是要想办法解决才是. 错误提示信息很明确是网络适配器不能创建连接. 查了很多资料,并且Or ...
- poj-------------(2752)Seek the Name, Seek the Fame(kmp)
Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11831 Ac ...
- js仿京东轮播图效果
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...