BZOJ2301——莫比乌斯&&整除分块
题目
对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。
分析
莫比乌斯经典入门题。
(我也刚学,就写一下
#include<bits/stdc++.h>
using namespace std; typedef long long ll;
const int maxn = + ;
int mu[maxn], prime[maxn], tot; //莫比乌斯表、素数表,素数个数
bool vis[maxn];
int premu[maxn]; //莫比乌斯的前缀和 void getMu(int n)
{
mu[]=;
for(int i = ;i <= n;i++)
{
if(!vis[i]) prime[++tot] = i, mu[i] = -;
for(int j = ;j <= tot && (ll)i * prime[j] <= n;j++)
{
vis[i * prime[j]] = true;
if(i % prime[j] == )
{
mu[i * prime[j]] = ;
break;
}
mu[i * prime[j]] = -mu[i];
}
}
for(int i = ;i <= n;i++) premu[i] = premu[i-] + mu[i];
} //1≤i≤n, 1≤j≤m, \sigma[gcd(i,j)=1]
int solve(int n, int m)
{
int res=;
for(int i=,j;i <= min(n,m);i = j+)
{
j = min(n/(n/i), m/(m/i));
res += (premu[j]-premu[i-]) * (n/i) * (m/i);
}
return res;
} int a, b, c, d, k; int main()
{
getMu(maxn);
int T;
scanf("%d", &T);
while(T--)
{
scanf("%d%d%d%d%d", &a, &b, &c, &d, &k);
printf("%d\n", solve(b/k, d/k) - solve((a-)/k, d/k) - solve(b/k, (c-)/k) + solve((a-)/k, (c-)/k));
}
return ;
}
BZOJ2301——莫比乌斯&&整除分块的更多相关文章
- P2257 莫比乌斯+整除分块
#include<bits/stdc++.h> #define ll long long using namespace std; ; int vis[maxn]; int mu[maxn ...
- [POI2007]ZAP-Queries (莫比乌斯反演+整除分块)
[POI2007]ZAP-Queries \(solution:\) 唉,数论实在有点烂了,昨天还会的,今天就不会了,周末刚证明的,今天全忘了,还不如早点写好题解. 这题首先我们可以列出来答案就是: ...
- Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 莫比乌斯反演 1101: [POI2007]Zap 设 \(f(i)\) 表示 \(( ...
- 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块
https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...
- 莫比乌斯反演&整除分块学习笔记
整除分块 用于计算$\sum_{i=1}^n f(\lfloor{n/i} \rfloor)*i$之类的函数 整除的话其实很多函数值是一样的,对于每一块一样的商集中处理即可 若一个商的左边界为l,则右 ...
- 洛谷 P2257 - YY的GCD(莫比乌斯反演+整除分块)
题面传送门 题意: 求满足 \(1 \leq x \leq n\),\(1 \leq y \leq m\),\(\gcd(x,y)\) 为质数的数对 \((x,y)\) 的个数. \(T\) 组询问. ...
- P2568 莫比乌斯反演+整除分块
#include<bits/stdc++.h> #define LL long long using namespace std; ; bool vis[maxn]; int prime[ ...
- 洛谷 - UVA11424 - GCD - Extreme (I) - 莫比乌斯反演 - 整除分块
https://www.luogu.org/problemnew/show/UVA11424 原本以为是一道四倍经验题来的. 因为输入的n很多导致像之前那样 \(O(n)\) 计算变得非常荒谬. 那么 ...
- [国家集训队] Crash的数字表格 - 莫比乌斯反演,整除分块
考虑到\(lcm(i,j)=\frac{ij}{gcd(i,j)}\) \(\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}\) \(\sum_{d=1}^{n} ...
随机推荐
- 基于tesseract-OCR进行中文识别
1. 环境准备 1.1 下载 下载Tesseract-OCR安装包,地址为: https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w32- ...
- [转帖]当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?
改天学习一下. https://www.cnblogs.com/alisystemsoftware/p/11570806.html 当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题 ...
- windows 下安装ElasticSearch方法
1.https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html 在此页面下载安装JDK1 ...
- python读写文件的操作
编程语言中,我们经常会和文件和文件夹打交道,这篇文章主要讲的是Python中,读写文件的常用操作: 一.打开文件 openFile = open('../Files/exampleFile.txt', ...
- shell习题第27题:带选项的增删用户脚本
[题目要求] 写一个支持选项的增加或删除用户的shell脚本 #!/bin/bash ]; then echo "Wrong, use bash $0 --add username, or ...
- prometheus+grafana监控mysql
prometheus+grafana监控mysql 1.安装配置MySQL官方的 Yum Repository(有mysql只需设置监控账号即可) [root@localhost ~]# wget - ...
- 情感交流篇:HTML页面如何与后端联系
通过ajax get方法: 基本格式:$.get("后台一般处理程序文件路径",{传值,格式为 KEY:VULES},function(后台返回值){接到后台数据后处理}); $ ...
- C#委托和事件的使用示例
一.委托 使用委托时要先实例化,和类一样,使用new关键字产生委托的新实例,然后将一个或者多个与委托签名匹配的方法与委托实例关联.随后调用委托时,就会调用所有与委托实例关联的方法. 与委托关联可以是任 ...
- (十七)SpringBoot之使用异步消息服务jms之ActiveMQ
一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...
- (六)发送、接收SOAP消息(1)
一.为什么要用soap 原本我们使用web服务都是根据wsdl生成客户端(生成一堆java文件)然后再调用,本章节讲解如何用soap消息来替代这种方式. 二.SOAP消息格式 SOAP(简单对象访问协 ...