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个子询问,最后的结果就是这四个子询问的记过加加减减 ...
随机推荐
- LeetCode 292 Nim Game 解题报告
题目要求 You are playing the following Nim Game with your friend: There is a heap of stones on the table ...
- LeetCode 476 Number Complement 解题报告
题目要求 Given a positive integer, output its complement number. The complement strategy is to flip the ...
- 《mongoDB》索引
一:基础操作 创建单列索引 语法: >db.collection.createIndex(keys, options) 语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想 ...
- eclipse debug调试时老是被URLClassLoader这个类拦截到,不能进入到要调试的类里面去
在使用eclipse进行试的时候,一直进入到URLClassLoader,而不能正常的进入断点,后来经过查资料,解决方法如下: 上面是百度给出的答案,我把图贴在这里,以便以后其他组的朋友遇到这个问题的 ...
- ubuntu上make menuconfig出错
如果使用make menuconfig的方式配置内核,又碰巧系统没有安装ncurses库(ubuntu系统默认就没有安装此库),就会出现错误,错误信息大体上如下: *** Unable to find ...
- windows版本下ELK配置
windows版本的es和kibana相对配置起来很简单,网上已经有很多例子都是正确的,只需按照步骤安装一下即可. 主要logstash,网上说的方案,大都不能配置成功,或者总有一些错误,下面把我自己 ...
- Python3学习之路~8.3 socket 服务端与客户端
通过8.2的实例1-6,我们可以总结出来,socket的服务端和客户端的一般建立步骤: 服务端 步骤:1创建实例,2绑定,3监听,4阻塞,5发送&接收数据,6关闭. #Author:Zheng ...
- grub启动流程和配置
grub stage 1 MBR中前 446个字节,如果把这里面的内容损坏,那么系统会认为当前磁盘没有启动引导功能,会尝试从光盘或者网络启动系统 grub stage 1.5 存放识别/boot ...
- 006-docker-安装-nginx
1.搜索镜像 docker search nginx 2.拉取合适镜像 docker pull nginx docker images 3.使用镜像 docker run -p 8080:80 --n ...
- idea-常用插件-nginx
1.mac上nginx安装 brew search nginx brew install nginx 当然也可以编译安装 安装完以后,可以在终端输出的信息里看到一些配置路径: /usr/local/e ...