Problem(莫比乌斯反演)
题意 : 中文题目不解释
求gcd(x,y) = k (a<=x<=b, c<=y<=d);
根据gcd(ka,kb) = k*gcd(a,b), 可将问题转化为求gcd(a/k, b/k) = 1;
再由容斥定理可得到gcd(x,y) = gcd(b,d)- gcd(a,d)- gcd(c,b)+ gcd(a,c);
再套上莫比乌斯反演的模板, 嗯, 然后就能得到一次TE;
正解 : 容斥+莫比乌斯反演+分块优化;
分块优化 : 考虑到[n/i]、[m/i]都会有大量的完全相等的部分,我们可以把[n/i]、[m/i]都相等的部分放在一起算,也就是一个分块的思想。预处理出μ(d)的前缀和即可。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm> using namespace std;
#define ll long long
const int maxn = ; ll pri[maxn], mu[maxn];
ll vis[maxn]; void init()
{
memset(vis, , sizeof(vis));
memset(mu, , sizeof(mu));
mu[] = ;
int cnt = ;
for(ll i =; i <= ; i++)
{
if(vis[i] == ) {mu[i] = -; pri[cnt++] = i;}
for(ll j =; j < cnt&&i*pri[j] <= ; j++)
{
ll k = i*pri[j];
vis[k] = ;
if(i%pri[j] == ) {mu[k] = ; break; }
else mu[k] = -mu[i];
}
}
for(ll i = ; i <= ; i++) // 前缀和处理mu;
mu[i] += mu[i-];
} ll cal(ll l, ll r) // 分块优化
{
if(l > r) swap(l, r);
ll ans = ;
ll hay = ;
for(ll i = ; i <=l; i = hay+)
{
hay = min(l/(l/i), r/(r/i) );
ans += (mu[hay] - mu[i-])*(l/i)*(r/i);
}
return ans;
} int main()
{
ios::sync_with_stdio(false);
init();
ll n;
cin >> n;
while(n--)
{
ll a, b, c, d, k;
cin >> a >> b >> c >> d >> k;
ll ans = ;
ans = cal(b/k, d/k)+ cal((a-)/k,(c-)/k) - cal((a-)/k, d/k)- cal((c-)/k, b/k);
printf("%lld\n", ans); }
return ;
}
Problem(莫比乌斯反演)的更多相关文章
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4032 Solved: 1817[Submit] ...
- 【莫比乌斯反演】关于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 Problem b(莫比乌斯反演+分块优化)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37166 题意:对于给出的n个询问,每次求有多少个数对(x,y),满 ...
- 【BZOJ2301】【HAOI2011】Problem B(莫比乌斯反演)
[BZOJ2301][HAOI2011]Problem B(莫比乌斯反演) 题面 Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y ...
- P2522 [HAOI2011]Problem b (莫比乌斯反演)
题目 P2522 [HAOI2011]Problem b 解析: 具体推导过程同P3455 [POI2007]ZAP-Queries 不同的是,这个题求的是\(\sum_{i=a}^b\sum_{j= ...
- BZOJ 2301 [HAOI2011]Problem b (分块 + 莫比乌斯反演)
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 6519 Solved: 3026[Submit] ...
- BZOJ 2301: [HAOI2011]Problem b (莫比乌斯反演)
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 436 Solved: 187[Submit][S ...
- Problem b 莫比乌斯反演+枚举除法的取值
莫比乌斯反演+枚举除法的取值 第二种形式: f(n)表示gcd(x,y)=n的数量. F(n)表示gcd(x,y)是n的倍数的数量. /** 题目:Problem b 链接:https://vjudg ...
- bzoj2301 [HAOI2011]Problem b【莫比乌斯反演 分块】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2301 很好的一道题.首先把每个询问转化为4个子询问,最后的结果就是这四个子询问的记过加加减减 ...
随机推荐
- 关于服务器时区BEIST-8、GMT-8、Asia/Shanghai、CST、GMT+8:00等缩写的含义
http://www.talkwithtrend.com/Article/147961 AIX系统时区总结 字数 2078阅读 5844评论 0赞 0 前几天NTP的问题牵涉出时区问题,大家可能被眼花 ...
- 洛谷P3233 世界树 [HNOI2014] 虚树
正解:虚树 解题报告: 传送门! 首先看到这种就要想到虚树这个是毫无疑问的QwQ 建虚树什么的都可以循规蹈矩地做,不说辣,具体可以看下虚树学习笔记什么的看下板子 但是建好虚树之后怎么搞还是有点儿讲究, ...
- 【PyQt5-Qt Designer】在GUI中使用pyqtgraph绘图库
pyqtgraph绘图库 1.1 简介: pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于内部实现方式上,使用了高速计算的numpy信号处理库以 ...
- 几种Linux 查询外网出口IP的方法(转)
原文:http://www.cnblogs.com/wudonghang/p/354289a61129731e7d2075968356e6ad.html Curl 纯文本格式输出: curl ican ...
- cudnn升级之后caffe无法训练的问题
由于安装新版本的TensorFlow需要cudnn6.0因此用6.0将原来的 5.0替换了,后来又用之前编译好的caffe进行训练,发现caffe会去找5.0的cudnn,然后就报错了,不能正常训练. ...
- es手动创建索引,修改索引,删除索引
1.创建索引 创建索引的语法PUT /my_index{ "settings": { ... any settings ... }, "mappings": { ...
- Redis和Memcache的区别是什么
Redis和Memcache都是内存数据库,但它们之间还是有区别的,跟着ytkah看看Redis和Memcache的区别吧 Redis 支持多种数据结构,如string,list,dict,set,z ...
- 终极大招——Scrapy框架
Scrapy框架 Scrapy 是一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途 ...
- 【adaboost】周志华
- JsonResponse返回中文乱码问题
class Publish(APIView): def get(self, request): publish_list = models.Publish.objects.all() bs = MyS ...