BZOJ 2301 Problem B(莫比乌斯反演)
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>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
int mul[],p[],mark[],sum[];
int read(){
char ch=getchar();int t=,f=;
while (ch<''||ch>''){if (ch=='') f=-;ch=getchar();}
while (''<=ch&&ch<=''){t=t*+ch-'';ch=getchar();}
return t*f;
}
void init(){
mul[]=;
for (int i=;i<=;i++){
if (!mark[i]){
p[++p[]]=i;
mul[i]=-;
}
for (int j=;j<=p[]&&p[j]*i<=;j++){
mark[i*p[j]]=;
if (i%p[j]) mul[p[j]*i]=mul[i]*(-);
else{
mul[p[j]*i]=;
break;
}
}
}
sum[]=;
for (int i=;i<=;i++) sum[i]=sum[i-]+mul[i];
}
int cal(int a,int b){
if (a>b) std::swap(a,b);
int res=;
for (int i=,j;i<=a;i=j+){
j=std::min(a/(a/i),b/(b/i));
res+=(a/i)*(b/i)*(sum[j]-sum[i-]);
}
return res;
}
int main(){
int T=read();
init();
while (T--){
int a=read(),b=read(),c=read(),d=read(),k=read();
a--;c--;
printf("%d\n",std::max(,cal(b/k,d/k)+cal(a/k,c/k)-cal(b/k,c/k)-cal(a/k,d/k)));
}
}
BZOJ 2301 Problem B(莫比乌斯反演)的更多相关文章
- BZOJ 2301 Problem b(莫比乌斯反演+分块优化)
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- 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\le ...
- 【莫比乌斯反演】关于Mobius反演与gcd的一些关系与问题简化(bzoj 2301 Problem b&&bzoj 2820 YY的GCD&&BZOJ 3529 数表)
首先我们来看一道题 BZOJ 2301 Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd( ...
- [BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明)
[BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明) 题面 T组询问,每次给出a,b,c,d,k,求\(\sum _{i=a}^b\sum _{j=c}^d[ ...
- Bzoj 2301: [HAOI2011]Problem b(莫比乌斯反演+除法分块)
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MB Description 对于给出的n个询问,每次求有多少个数对(x, ...
- BZOJ 2301 Problem b(莫比乌斯反演+分块优化)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37166 题意:对于给出的n个询问,每次求有多少个数对(x,y),满 ...
- BZOJ.2301.[HAOI2011]Problem B(莫比乌斯反演 容斥)
[Update] 我好像现在都看不懂我当时在写什么了=-= \(Description\) 求\(\sum_{i=a}^b\sum_{j=c}^d[(i,j)=k]\) \(Solution\) 首先 ...
- BZOJ 2301 [HAOI2011]Problem b ——莫比乌斯反演
分成四块进行计算,这是显而易见的.(雾) 然后考虑计算$\sum_{i=1}^n|sum_{j=1}^m gcd(i,j)=k$ 首先可以把n,m/=k,就变成统计&i<=n,j< ...
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4032 Solved: 1817[Submit] ...
随机推荐
- MySQL强制性操作
1.强制索引FORCE INDEX SELECT * FROM TABLE1 FORCE INDEX (FIELD1) … 只使用建立在FIELD1上的索引,而不使用其它字段上的索引. 2.忽略索引 ...
- mysql use mysql hang
uat-db03:/root# mysql -A -uroot -p1234567 Warning: Using a password on the command line interface ca ...
- 使用jQuery来检测远程图片文件是否存在
使用jQuery来检测远程图片文件是否存在 最近为我的憨豆人笑园添加图片功能时,遇到了这个问题,用户可以填写一个远程的图片地址,也可以上传一个本地图片.为了不浪费服务器的资源,我们需要在客户端先对用户 ...
- 线程篇-01-NSThread
一.概述 1.使用NSThread创建线程的三种方式和区别. 二.核心 2.1 NSThread创建线程的三种方式和区别. 主要有NSThread对象的创建线程的类方法detachNewThreadS ...
- hdu 3635 Dragon Balls(并查集应用)
Problem Description Five hundred years later, the number of dragon balls will increase unexpectedly, ...
- 【Spark Core】任务运行机制和Task源代码浅析1
引言 上一小节<TaskScheduler源代码与任务提交原理浅析2>介绍了Driver側将Stage进行划分.依据Executor闲置情况分发任务,终于通过DriverActor向exe ...
- [Ionic] Build and Run an Ionic App from Scratch
Install: npm install ionic cordova -g Create a project with blank template: ionic start <project_ ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- SQL 练习题
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- ajax参数中出现空格
jquery中发起ajax请求时的参数名中不能有空格.如果是get请求参数的中的空格会变成“+”符而在post请求中看不到这种变化,但无论哪种情况都无法与服务接口的参数就行匹配(此时进行调试也不会触发 ...