原题链接

庆祝一下:数论紫题达成成就!

第一道数论紫题。写个题解庆祝一下吧。

简要题意:求

\[\sum_{i=1}^n \sum_{j=1}^n [gcd(i,j)==p]
\]

其中 \(p\) 为素数。

注:

$ [A] = 0 $ 当且仅当 \(A\) 不成立。 $ [A] = 1 $ 当且仅当 \(A\) 成立。

这不就是单位函数的定义嘛。

先抛个定义:

\[f_n = \sum_{i=1}^n [\gcd(i,n) == 1]
\]

即 \(\leq n\) 且 与 \(n\) 互质 的数的个数。

下面开始推式子:

愉快地推式子时间

\[\sum_{i=1}^n \sum_{j=1}^n [\gcd(i,j) == p]
\]

\[= \sum_{p=1}^n \sum_{i=1}^{\lfloor \frac{n}{p} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{p} \rfloor} [\gcd(i,j) == 1]
\]

(依据:将素数 \(p\) 独立展开,枚举它们的最大公因数值)

\[= \sum_{p=1}^n \bigg ( \sum_{i=1}^{\lfloor \frac{n}{p} \rfloor} \bigg( 2 \times \sum_{j=1}^i [\gcd(i,j) == 1] \bigg ) - 1 \bigg )
\]

(依据:考虑 \(i \leq j\) 的情况,然后 \(\times 2\) ,对于 \(i = j\) 的情况,\(-1\) 可以很好地解决)

\[= \sum_{p=1}^n \bigg ( \bigg ( 2 \times \sum_{i=1}^{\lfloor \frac{n}{p} \rfloor} f_i \bigg ) - 1 \bigg )
\]

如果我们用 \(O(n)\) 的时间求出了所有的 \(f_i\) 和 \(\leq n\) 所有的素数,那么直接 做 \(f\) 的前缀和 ,扫一遍完事。

求出所有的 \(f_i\) :显然线性筛模板。(当然是 欧拉筛),然后顺便可以求出所有的素数。

时间复杂度: \(O(n)\).

实际得分:\(100pts\).

#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std; typedef long long ll;
const int N=1e7+1; inline int read(){char ch=getchar();int f=1;while(ch<'0' || ch>'9') {if(ch=='-') f=-f; ch=getchar();}
int x=0;while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;} int n,phi[N],prime[N];
int f=0; bool h[N];
ll ans=0,sum[N];
// phi[i] 就是 <= n 的与 n 互质的数的个数
// prime[i] 为第 i 个素数
// h[i] = (i 是素数) ? 0 : 1
// sum[i] = phi[1] + phi[2] + ... + phi[i] int main(){
n=read();
phi[1]=1; h[1]=1;
for(int i=2;i<=n;i++) {
if(!h[i]) prime[++f]=i,phi[i]=i-1;
for(int j=1;j<=f && i*prime[j]<=n;j++) {
h[i*prime[j]]=1;
if(i%prime[j]==0) {
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
phi[i*prime[j]]=phi[i]*(prime[j]-1);
} //欧拉筛模板
} for(int i=1;i<=n;i++) sum[i]=sum[i-1]+phi[i]; //前缀和
for(int i=1;i<=f && prime[i]<=n;i++)
ans+=(sum[n/prime[i]]<<1)-1; //套式子
printf("%lld\n",ans);
return 0;
}

洛谷 P2568 GCD 题解的更多相关文章

  1. 洛谷P2568 GCD (欧拉函数/莫比乌斯反演)

    P2568 GCD 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入 ...

  2. 洛谷P2568 GCD(线性筛法)

    题目链接:传送门 题目: 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 ...

  3. 洛谷 - P2568 - GCD - 欧拉函数

    https://www.luogu.org/problemnew/show/P2568 统计n以内gcd为质数的数的个数. 求 \(\sum\limits_p \sum\limits_{i=1}^{n ...

  4. [洛谷P2568]GCD

    题目大意:给你$n(1\leqslant n\leqslant 10^7)$,求$\displaystyle\sum\limits_{x=1}^n\displaystyle\sum\limits_{y ...

  5. 洛谷 P2568 GCD

    https://www.luogu.org/problemnew/show/P2568#sub 最喜欢题面简洁的题目了. 本题为求两个数的gcd是素数,那么我们将x和y拆一下, 假设p为$gcd(x, ...

  6. 洛谷 P2568 GCD(莫比乌斯反演)

    题意:$\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd(i,j)\epsilon prime]$. 对于这类题一般就是枚举gcd,可得: =$\sum_{d\epsilon prim ...

  7. 洛谷P2568 GCD(莫比乌斯反演)

    传送门 这题和p2257一样……不过是n和m相同而已…… 所以虽然正解是欧拉函数然而直接改改就行了所以懒得再码一遍了2333 不过这题卡空间,记得mu开short,vis开bool //minamot ...

  8. 洛谷 P5221 Product 题解

    原题链接 庆祝!第二道数论紫题. 推式子真是太有趣了! \[\prod_{i=1}^n \prod_{j=1}^n \frac{\operatorname{lcm}(i,j)}{\gcd(i,j)} ...

  9. 洛谷NOIp热身赛题解

    洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline # ...

随机推荐

  1. js之构造函数的理解

    在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式.对象字面量是一种灵活方便的书写方式,例如:   1 2 3 4 5 6 var o1 = {     p:”I’m in ...

  2. 快速入门和查询Python

    评分: 4.5 作者: Ryan Lu 类别:Python 时间: 1. 注释 三种方式: 单行注释以 # 开头 多行注释用三个单引号 ''' 将注释括起来 多行注释用三个双引号 "&quo ...

  3. VMWare vCenter 4.x 数据库由SQL Express 迁移至SQL Server 2008 R2

    默认安装下的 VMware vCenter 4.x 会在本地安装 SQL Express 2005 版本,如果你有需要迁移至 Full SQL Server版本比如 SQL Server 2008 R ...

  4. C#可空类型知多少

    在项目中我们经常会遇到可为空类型,那么到底什么是可为空类型呢?下面我们将从4个方面为大家剖析. 1.可空类型基础知识 顾名思义,可空类型指的就是某个对象类型可以为空,同时也是System.Nullab ...

  5. Electron打包H5网页为桌面运行程序

    一.安装配置环境 Electron(一种桌面应用程序运行时),Electron 把 Chromium 和 Node 合并到一个单独的运行时里面,很适合开发桌面 web 形式的应用程序,通过Node它提 ...

  6. 解决vue2.0下IE浏览器白屏问题

    公司新开发的项目需要兼容到IE9+ 就在index.html页面加入 <meta http-equiv="X-UA-Compatible" content="IE= ...

  7. 纯JS实现KeyboardNav(学习笔记)一

    纯JS实现KeyboardNav(学习笔记)一 这篇博客只是自己的学习笔记,供日后复习所用,没有经过精心排版,也没有按逻辑编写 GitHub项目源码 预览地址 最终效果 KeyboardNav使用指南 ...

  8. Redis(6)——GeoHash查找附近的人

    像微信 "附近的人",美团 "附近的餐厅",支付宝共享单车 "附近的车" 是怎么设计实现的呢? 一.使用数据库实现查找附近的人 我们都知道, ...

  9. 编译 openwrt 及初始配置

    主机为 ubuntu 14 x64 硬件: 优酷土豆宝 cpuMT7620A,内存128M,flash 32M有2个源,用哪个也可以git clone https://github.com/openw ...

  10. 安卓 打飞机 app 开发 第一篇

    先上效果图 其实,当时刚买 htc G8 的时候(那时北京的房价还是6千一平),安卓2.1 ,2.3 的时候就已经有安卓方面的开发的兴趣,但后来就没有弄过... today 突然想起来,手机上连个游戏 ...