Gcd

\[Time Limit: 10000 ms\quad Memory Limit: 262144 kB
\]

题意

求 \(gcd\left(x,y\right) = p\) 的对数,其中\(1 \leq x,y \leq n\)且 \(p\)是质数

思路

\(g\left(x\right)\) 表示 \(gcd\left(a, b\right) | x\) 的对数

\(f\left(x\right)\) 表示 \(gcd\left(a, b\right) = x\) 的对数

根据莫比乌斯反演有

\[ f\left(n\right) = \sum_{n|d} g\left(d\right)\\
g\left(n\right) = \sum_{n|d} \mu\left(\frac{d}{n}\right) f\left(d\right) \\
\]

根据题意

\[ f\left(x\right) = \lfloor\frac{n}{x}\rfloor \lfloor\frac{n}{x}\rfloor \\
\]

那么就可以得到

\[\begin{aligned}
ans &= \sum_{prime(p)} g\left(p\right) \\
&= \sum_{prime(p)} \sum_{p|d} \mu\left(\frac{d}{p}\right) \lfloor\frac{n}{d}\rfloor \lfloor\frac{n}{d}\rfloor \\
\end{aligned}
\]

对于每个 \(d\),找到所有满足 \(p|d\) 的 \(prime(p)\),预处理出 \(\sum_{p|d}\mu\left(\frac{d}{p}\right)\)。

  • 如果 \(d\) 是质数,容易得到 \(sum[d] = 1\)。
  • 如果 \(d\) 不是质数,那么可以把 \(d\) 看成 \(p_{1}^{a1}p_{2}^{a2}...p_{k}^{ak}\),设 \(d = p_{1}x\)

\[\begin{aligned}
\sum_{p|d} \mu\left(\frac{d}{p}\right) &= \mu\left(\frac{d}{p_{1}}\right)+\mu\left(\frac{d}{p_{2}}\right)+...+\mu\left(\frac{d}{p_{k}}\right)\\
&= \mu\left(x\right) + \mu\left(\frac{p_{1}x}{p_{2}}\right)+...+\mu\left(\frac{p_{1}x}{p_{k}}\right) \\
\sum_{p|x}\mu\left(\frac{x}{p}\right) &= \mu\left(\frac{x}{p_{2}}\right)+...+\mu\left(\frac{x}{p_{k}}\right)
\end{aligned}
\]

因为\(p_{k}|d,d=p_{1}x\),则 \(p_{k}|x\)。那么现在的问题就在于 \(p_{1}|x\)。

\(\quad\) 1. 若 \(p1|x\),则对于 \(\left(\frac{p_{1}x}{p_{k}}\right)\),可以发现除完以后,仍然会包括两个及以上 \(p_{1}\) 因子,所以其 \(\mu\) 值为\(0\)。

\(\quad\) 2. 反之,\(\left(\frac{p_{1}x}{p_{k}}\right)\) 在 \(\left(\frac{x}{p_{k}}\right)\)的基础上多了一个 \(p_{1}\) 因子且指数为 \(1\),根据 \(\mu\) 的公式,\(\mu\left(\frac{p_{1}x}{p_{k}}\right) =- \mu\left(\frac{x}{p_{k}}\right)\)。

综合上述

\[\sum_{p|d} \mu\left(\frac{d}{p}\right) =
\begin{cases}
\mu\left(x\right) & p_{1}|x\\
\mu\left(x\right) - \sum_{x|d} \mu\left(\frac{x}{p}\right) &otherwise\\
\end{cases}
\]

/***************************************************************
> File Name : a.cpp
> Author : Jiaaaaaaaqi
> Created Time : 2019年07月17日 星期三 10时20分16秒
***************************************************************/ #include <map>
#include <set>
#include <list>
#include <ctime>
#include <cmath>
#include <stack>
#include <queue>
#include <cfloat>
#include <string>
#include <vector>
#include <cstdio>
#include <bitset>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define lowbit(x) x & (-x)
#define mes(a, b) memset(a, b, sizeof a)
#define fi first
#define se second
#define pii pair<int, int> typedef unsigned long long int ull;
typedef long long int ll;
const int maxn = 1e7 + 10;
const int maxm = 1e5 + 10;
const ll mod = 1e9 + 7;
const ll INF = 1e18 + 100;
const int inf = 0x3f3f3f3f;
const double pi = acos(-1.0);
const double eps = 1e-8;
using namespace std; ll n, m;
int cas, tol, T; int pri[maxn], mob[maxn];
bool ispri[maxn];
ll sum[maxn]; void handle() {
mes(sum, 0), mes(pri, 0), mes(ispri, 1);
tol = 0;
mob[1] = 1;
int mx = 1e7;
for(int i=2; i<=mx; i++) {
if(ispri[i]) {
pri[++tol] = i;
mob[i] = -1;
sum[i] = 1;
}
for(int j=1; j<=tol && i*pri[j]<=mx; j++) {
ispri[i*pri[j]] = false;
if(i%pri[j] == 0) {
mob[i*pri[j]] = 0;
sum[i*pri[j]] = mob[i];
break;
} else {
mob[i*pri[j]] = -mob[i];
sum[i*pri[j]] = mob[i] - sum[i];
}
}
}
} int main() {
handle();
printf("%lld %lld %lld\n", sum[12], sum[6], mob[6]);
scanf("%lld", &n);
ll ans = 0;
for(ll d=2; d<=n; d++) {
ans += 1ll*sum[d]*(n/d)*(n/d);
}
printf("%lld\n", ans);
return 0;
}

Gcd HYSBZ - 2818 (莫比乌斯反演)的更多相关文章

  1. HYSBZ - 2818莫比乌斯反演

    链接 题意很简洁不说了 题解:一开始我想直接暴力,复杂度是O(log(1e7)*sqrt(1e7))算出来是2e9,可能会复杂度爆炸,但是我看时限是10s,直接大力莽了一发暴力,没想到就过了= = 就 ...

  2. 【CJOJ2512】gcd之和(莫比乌斯反演)

    [CJOJ2512]gcd之和(莫比乌斯反演) 题面 给定\(n,m(n,m<=10^7)\) 求 \[\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)\] 题解 首先把公因数直 ...

  3. bnu——GCD SUM (莫比乌斯反演)

    题目:GCD SUM 题目链接:http://www.bnuoj.com/v3/problem_show.php?pid=39872 算法:莫比乌斯反演.优化 #include<stdio.h& ...

  4. 【Project Euler】530 GCD of Divisors 莫比乌斯反演

    [题目]GCD of Divisors [题意]给定f(n)=Σd|n gcd(d,n/d)的前缀和F(n),n=10^15. [算法]莫比乌斯反演 [题解]参考:任之洲数论函数.pdf 这个范围显然 ...

  5. GCD HDU - 1695 莫比乌斯反演入门

    题目链接:https://cn.vjudge.net/problem/HDU-1695#author=541607120101 感觉讲的很好的一个博客:https://www.cnblogs.com/ ...

  6. HDU - 4675 GCD of Sequence (莫比乌斯反演+组合数学)

    题意:给出序列[a1..aN],整数M和k,求对1-M中的每个整数d,构建新的序列[b1...bN],使其满足: 1. \(1 \le bi \le M\) 2. \(gcd(b 1, b 2, -, ...

  7. HYSBZ - 2005 莫比乌斯反演

    链接 对于gcd(i,j)的位置来说,对答案的贡献是2*(gcd(i,j)-1)+1,所以答案ans ans=Σ(1<=i<=n)(1<=j<=m)2*(gcd(i,j)-1) ...

  8. [luogu P2586] GCD 解题报告 (莫比乌斯反演|欧拉函数)

    题目链接:https://www.luogu.org/problemnew/show/P2568#sub 题目大意: 计算​$\sum_{x=1}^n\sum_{y=1}^n [gcd(x,y)==p ...

  9. 【HDU4947】GCD Array(莫比乌斯反演+树状数组)

    点此看题面 大致题意: 一个长度为\(n\)的数组,实现两种操作:将满足\(gcd(i,k)=d\)的\(a_i\)加上\(v\),询问\(\sum_{i=1}^xa_i\). 对于修改操作的推式子 ...

随机推荐

  1. webUI框架miniUI,easyUI,extJS,Bootstrap简介及简单部署

    本文为大家讲解的是webUI框架miniUI,easyUI,extJS,Bootstrap简介及简单部属,感兴趣的同学参考下 ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端a ...

  2. 【java】单实例下的 流水号【21位】

    单实例环境,不是分布式 需要流水号 /** * 流水号生成器 * * 年+天号+毫秒+随机数 * 2019+134+480+11位随机数 * 4+3+3+11 = 21位 * * * @author ...

  3. ML学习笔记之Anaconda中命令形式安装XGBoost(pip install)

    0x00 概述 在没有安装XGBoost之前,import xgboot会出错,如下: # ModuleNotFoundError: No module named ‘xgboost’ 0x01 安装 ...

  4. Prometheus监控学习笔记之容器监控Grafana模块

    0x00 概述 Grafana 是一个开源的,可以用于大规模指标数据的可视化项目,甚至还能对指标进行报警.基于友好的 Apache License 2.0 开源协议,目前是prometheus监控展示 ...

  5. C#读写调整UVC摄像头画面-饱和度

    有时,我们需要在C#代码中对摄像头的饱和度进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄 ...

  6. C#读写修改设置调整UVC摄像头画面-滚动

    有时,我们需要在C#代码中对摄像头的滚动进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...

  7. IntelliJ Cannot find declaration to goto----解决方案

    系统中已经有了该类库,还是找不到类提示 close the project in intellij. close intellij. go to the project folder and dele ...

  8. Beego学习笔记6:分页的实现

    实现分页的效果 1>     分页的实现的业务逻辑 1->每个页面显示N条数据,总的数据记录数M,则分页的个数为M%N==0?M/N:M/N+1; 2->页面渲染分页的html部分 ...

  9. consul:架构

    官方文档:https://www.consul.io/docs/internals/architecture.html

  10. Python如何去实际提高工作的效率?也许这个会有用!

    4月初,班主任的某次周会议上,华华关切的问了一下:最近班主任们有什么难题吗?就是花费了你们大部分时间的工作!我们Python天团可以帮你们解决问题. 班主任大主管星星说:有.目前有一个大难题.我们每天 ...