【数论】GCD(P2568)
正题
P2568
题目大意
求满足1≤x,y≤n1\leq x,y\leq n1≤x,y≤n且gcd(x,y)=primegcd(x,y)=primegcd(x,y)=prime的数对(x,y)(x,y)(x,y)的个数
解题思路
题目即求
∑i=1n∑j=1n[gcd(i,j)=prime]\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)=prime]i=1∑nj=1∑n[gcd(i,j)=prime]
可以考虑先枚举该prime,那么有
∑p∈primen∑i=1n/p∑j=1n/p[gcd(i,j)=1]∑p∈primen∑i=1n/p∑j=1n/p∑d∣i,d∣jμ(d)∑p∈primen∑d=1n/pμ(d)×⌊nd⌋×⌊nd⌋\sum_{p\in prime}^n\sum_{i=1}^{n/p}\sum_{j=1}^{n/p}[gcd(i,j)=1]\\ \sum_{p\in prime}^n\sum_{i=1}^{n/p}\sum_{j=1}^{n/p}\sum_{d|i,d|j}\mu(d)\\ \sum_{p\in prime}^n\sum_{d=1}^{n/p}\mu(d)\times \left\lfloor\frac{n}{d}\right\rfloor\times \left\lfloor\frac{n}{d}\right\rfloor p∈prime∑ni=1∑n/pj=1∑n/p[gcd(i,j)=1]p∈prime∑ni=1∑n/pj=1∑n/pd∣i,d∣j∑μ(d)p∈prime∑nd=1∑n/pμ(d)×⌊dn⌋×⌊dn⌋
时间复杂度不太会证,看dalao证的是 O(n/logn)O(n/log n)O(n/logn)的
code
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 10000010
using namespace std;
ll n,ans,w,p[N],mu[N],prime[N];
void work()
{p[1]=mu[1]=1;for(ll i=2;i<=10000000;++i){if(!p[i]){prime[++w]=i;mu[i]=-1;}for(ll j=1;j<=w&&i*prime[j]<=10000000;++j){p[i*prime[j]]=1;if(i%prime[j]==0){mu[i*prime[j]]=0;break;}else mu[i*prime[j]]=-mu[i];}}for(ll i=2;i<=10000000;++i)mu[i]+=mu[i-1];return;
}
ll get(ll n)
{ll sum=0;for(ll l=1,r=0;l<=n;l=r+1){r=n/(n/l);sum+=(mu[r]-mu[l-1])*(n/l)*(n/l);}return sum;
}
int main()
{scanf("%lld",&n);work();for(ll i=1;i<=w;++i)if(prime[i]<=n)ans+=get(n/prime[i]);else break;printf("%lld",ans);return 0;
}
【数论】GCD(P2568)相关推荐
- [数论]Gcd/ExGcd欧几里得学习笔记
\(Q\):什么是\(GCD\)? \(GCD\) \(GCD\),即最大公约数(\(Greatest\ Common\ Divisor\)) 对于两个自然数\(a,b\),定义\(GCD(a,b)\ ...
- 数论 GCD 最大公约数 欧拉函数经典题 洛谷 CF1295D Same GCDs Codeforces1295D
前言 两个月了,我终于更了-- 这两个月忙(chen)于(mi)内(xiang)卷(le),现在终于出新文章啦,(也算兑现了当初的出数论题文章的承诺)~ 不说废话了,今天给大家介绍一道CF/洛谷上的 ...
- 数论----gcd和lcm
gcd即最大公约数,lcm即最小公倍数. 首先给出a×b=gcd×lcm 证明:令gcd(a,b)=k,a=xk,b=yk,则a×b=x*y*k*k,而lcm=x*y*k,所以a*b=gcd*lcm. ...
- Codeforces Round #554 (Div. 2) C. Neko does Maths (数论 GCD(a,b) = GCD(a,b-a))
传送门 •题意 给出两个正整数 a,b: 求解 k ,使得 LCM(a+k,b+k) 最小,如果有多个 k 使得 LCM() 最小,输出最小的k: •思路 时隔很久,又重新做这个题 温故果然可以知新❤ ...
- HDU - 4497 GCD and LCM 数论gcd
传送门 文章目录 题意: 思路: 题意: 给三个数的lcmlcmlcm和gcdgcdgcd,求满足条件的三元组组合个数. 思路: 首先lcmmodgcd==0lcm\bmod gcd==0lcmmod ...
- Educational Codeforces Round 106 (Rated for Div. 2) D. The Number of Pairs 数论gcd
传送门 文章目录 题意: 思路: 题意: 给三个数c,d,xc,d,xc,d,x,求满足c∗lcm(a,b)−d∗gcd(a,b)=xc*lcm(a,b)-d*gcd(a,b)=xc∗lcm(a,b) ...
- nssl1335-蛋糕切割【数论,GCD】
正题 题目大意 n∗mn*mn∗m的矩阵,求对角线经过多少个格子(经过格子内部才算). 解题思路 FromZYCdalaoFrom\ ZYCdalaoFrom ZYCdalao的思路:::对于若(n, ...
- P1072-Hankson的趣味题【数论,gcd】
正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1072 题目大意 a1=gcd(a0,x)a1=gcd(a0,x) ...
- 【数论gcd】P6476 [NOI Online #2 提高组]涂色游戏(luogu)
思路: gcd缩范围然后模拟p1红p2蓝设p1<p2否则换过来,然后从1开始,过k−1个倍数之后他是否还在范围内,如果在范围内,就有k个蓝色相连,然后按照题目输出 CodeCodeCode: # ...
- D. Not Adding (数论 gcd 筛法)
题解:这题我们最终是看有多少个gcd可以被加在数组后面,因为gcd只会变小不会变大,所以我们最多将1~A中的所有数都加进来(A是整个数组元素的最大值).所以我们可以考虑对于暴力1到A的每一个数,看这个 ...
最新文章
- 拼音开头有什么字_excel查找函数应用:如何提取姓名的拼音首字母
- Initializing Spring root WebApplicationContext
- 【设计模式】开闭原则
- Maven本地库添加Oracle JDBC驱动
- java中console_Java:如何从System.Console()获取输入
- 斯坦福机器学习课程 Exercise 习题三
- linux 扩展挂载盘大小_Linux 挂载新添加磁盘LVM配置
- Struts1和Struts2的特点、工作流程及差异性
- 常用编程语言的介绍及特点
- DM6437 OSD调试记录
- js生成execl表格
- RDS数据库空间满了怎么办?
- python网易云热歌榜歌曲信息爬取(iframe框架内数据爬取,src为空)
- Error creating bean with name 'redisTemplate' defined in URL
- 【IOS】IOS开发问题解决方法索引(三)
- 斯坦福机器人学导论(视频+英文PPT讲义+课程作业+英文书籍)
- 逻辑和编程语言(PTIME 的逻辑/命题和谓词逻辑)
- LiDAR360使用说明书
- 中型公司网络架构拓扑与详解
- php diy明信片代码,用ps制作一张简单的明信片
热门文章
- mysql视图实现的_mysql视图是什么?怎么实现?
- html点击图片弹出大图特效代码,Jquery 点击图片在弹出层显示大图
- mysql 基础视图_MySQL基础(4) | 视图
- leetcode206:反转链表
- 利用vector实现一对一(pair<int,int>)
- Java 文件的拷贝
- 创新视角下的复盘 | 2021/08/01-2021/09/30
- 你知道304吗?图解强缓存和协商缓存
- [Nginx]负载均衡和动静分离
- [SpringSecurity]web权限方案_用户授权_注解使用