Luogu P2568 GCD
我们首先发现这样肯定是做不了的,所以我们枚举为\(gcd(x,y)=d\)的\(d\)
然后考虑以下的性质:
\(gcd(x,y)=1 \Leftrightarrow gcd(px,py)=p(p为素数)\)
这个很显然吧,因此当我们枚举素数\(d\)时只需要计算\(x,y\in[1,\lfloor\frac{n}{d}\rfloor]\)且\(gcd(x,y)=1\)的有序\(x,y\)对数即可。
我们假定\(x<=y\),那么很容易结合欧拉函数的性质得出此时对答案的贡献为\(2\cdot\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\phi(i)-1\)
这个比较显然吧,假定\(i\in[1,\lfloor\frac{n}{d}\rfloor]\)为较大的那个,所以无序的对数就是\(\phi(i)\),由于有序所以乘2。最后注意一下\((1,1)\)会被计算两次要减去。
最后给欧拉函数记一个前缀和即可。
CODE
#include<cstdio>
#define RI register int
using namespace std;
const int P=1e7;
int prime[P+5],phi[P+5],cnt,n; long long ans,sum[P+5]; bool vis[P+5];
inline void resolve(int x)
{
vis[1]=phi[1]=1; sum[1]=2; for (RI i=2;i<=n;++i)
{
if (!vis[i]) prime[++cnt]=i,phi[i]=i-1;
for (RI j=1;j<=cnt&&i*prime[j]<=n;++j)
{
vis[i*prime[j]]=1; if (i%prime[j]) phi[i*prime[j]]=phi[i]*(prime[j]-1);
else { phi[i*prime[j]]=phi[i]*prime[j]; break; }
}
sum[i]=sum[i-1]+(phi[i]<<1);
}
}
int main()
{
RI i; scanf("%d",&n); for (resolve(n),i=1;i<=cnt;++i)
ans+=sum[n/prime[i]]-1; return printf("%lld",ans),0;
}
Luogu P2568 GCD的更多相关文章
- 「Luogu P2568 GCD」
看到这是一道紫题还是和gcd有关的才点进来(毕竟数论只会gcd). 前置芝士 质数**(又称素数):因数只有1和本身,但是很特殊的1不是一个质数. gcd**:欧几里得算法,又称辗转相除法,可以在约为 ...
- 洛谷P2568 GCD (欧拉函数/莫比乌斯反演)
P2568 GCD 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入 ...
- 洛谷 P2568 GCD
https://www.luogu.org/problemnew/show/P2568#sub 最喜欢题面简洁的题目了. 本题为求两个数的gcd是素数,那么我们将x和y拆一下, 假设p为$gcd(x, ...
- 洛谷 - P2568 - GCD - 欧拉函数
https://www.luogu.org/problemnew/show/P2568 统计n以内gcd为质数的数的个数. 求 \(\sum\limits_p \sum\limits_{i=1}^{n ...
- [luogu P2586] GCD 解题报告 (莫比乌斯反演|欧拉函数)
题目链接:https://www.luogu.org/problemnew/show/P2568#sub 题目大意: 计算$\sum_{x=1}^n\sum_{y=1}^n [gcd(x,y)==p ...
- 洛谷P2568 GCD(线性筛法)
题目链接:传送门 题目: 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 ...
- [洛谷P2568]GCD
题目大意:给你$n(1\leqslant n\leqslant 10^7)$,求$\displaystyle\sum\limits_{x=1}^n\displaystyle\sum\limits_{y ...
- P2568 GCD
\(\color{#0066ff}{ 题目描述 }\) 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. \(\color{#0066ff}{输入格式}\ ...
- [luogu 2568] GCD (欧拉函数)
题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入样例#1: 4 输出样例#1: 4 ...
随机推荐
- 喜闻乐见-Android应用的生命周期
本文主要讲述了App的启动流程.Application的生命周期以及进程的回收机制. 在绝大多数情况下,每一个Android应用都在自己的Linux进程中运行.当需要运行某些代码时,进程就会被创建.进 ...
- plt 数据可视化
1.plt.plot(x,y,color) 折线坐标图 import matplotlib.pyplot as plt h = np.linspace(1, 10, 10) v = np.linspa ...
- 利用python中的gensim模块训练和测试word2vec
word2vec的基础知识介绍参考上一篇博客和列举的参考资料. 首先利用安装gensim模块,相关依赖如下,注意版本要一致: Python >= 2.7 (tested with version ...
- [20171113]修改表结构删除列相关问题2.txt
[20171113]修改表结构删除列相关问题2.txt --//测试看看修改表结构删除列产生的redo向量,对这些操作细节不了解,分析redo看看. 1.环境:SCOTT@book> @ &am ...
- systemd 和 如何修改和创建一个 systemd service (Understanding and administering systemd)
系统中经常会使用到 systemctl 去管理systemd程序,刚刚看了一篇关于 systemd 和 SysV 相关的文章,这里简要记录一下: systemd定义: (英文来解释更为原汁原味) sy ...
- dell t130服务器安装windowsserver2008R2系统
dell T130服务器系统是可以安装windowsserver2008R2系统. 总共8个USB端口: 后置USB:2个USB 3.0和4个USB 2.0 前置USB:1个USB 2.0和1个USB ...
- 遇到电脑IP地址冲突了怎么解决
由于路由器是自动分配IP地址的,如果多个设备设置的是IP地址自动获取,就会出现IP地址冲突的情况当局域网内有相同IP,并且该机器启动了防火墙,那就没办法自动更新到下一个IP的地址了,所以此时发生了冲突 ...
- YUM仓库服务与PXE网络装机
1.yum:基于RPM包构建软件更新机制自动解决依赖关系,软件包由软件包库提供 提供方式:ftp服务:ftp://IP地址/仓库目录 Http服务:http :// IP地址/仓库目录 本地目录:f ...
- keil uvision4不能显示中文
打开编辑-配置 选择字体和颜色如下图 去掉右边 在注释中使用颜色 就可以了
- 理解LSTM
本文基于Understanding-LSTMs进行概括整理,对LSTM进行一个简单的介绍 什么是LSTM LSTM(Long Short Term Memory networks)可以解决传统RNN的 ...