当前位置: 首页 > news >正文

《洛谷深入浅出进阶篇》p2568 GCD

P2568 GCD - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P2568

大致题意:给定正整数n,求1<= x,y<=n 且 gcd(x,y)为素数的数对(x,y)有多少对。(n<=10^7)

思路:不如找n以内的所有的素数,然后统计每一个素数,是哪些数的最大公约数。

假设gcd(x,y)=p,设x=tp,y=rp;则 t与r必然互质。

由于x,y<=n,那么  t,r<=n/p。

所以,假设r更大,那么我们只要求1~r中与r互素的数字有多少个。

也就是求\psi\left(k \right )。然后将\psi\left(k \right )*2 ,

由于可以取遍1~n/p,

别忘了r=1,t=1,的时候也算了两遍,所以

对于任意一个1~n的质数,其总方案就是:2*\sum_{i=1}^{n/p}\psi\left(i \right )-1

最终的答案就是\sum_{t=1}^{tot}(2*\sum_{i=1}^{n/p_{t}}(\psi\left(i \right ))-1

所以我们只需要用筛法求欧拉函数,同时求它的前缀和,

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<cctype>
#include<map>
#include<set>
#include<queue>
#include<numeric>
#include<iomanip>using namespace std;
const int N = 1e7 + 7;
int pri[N], phi[N], flag[N];  // 质数表, 欧拉函数 , 标记函数
long long sumphi[N];  // 前缀和数组
int tot;// 有多少个质数
int main() {int n;cin >> n;phi[1] = sumphi[1] = 1;  //预处理 1 的情况for (int i = 2; i <= n; i++) {if (flag[i] == 0) {   //套线性筛的板子pri[tot++] = i;phi[i] = i - 1;   }sumphi[i] = sumphi[i - 1] + phi[i];    //处理前缀和for (int j = 0; j < tot and pri[j] * i <= n; j++) {  flag[i * pri[j]] = 1;if (i % pri[j] == 0) {phi[i * pri[j]] = pri[j] * phi[i];break;}else {phi[i * pri[j]] = (pri[j] - 1) * phi[i];}}}long long ans = 0;for (int i = 0; i < tot; i++) {ans += sumphi[n / pri[i]] * 2 - 1;}cout << ans;
}

相关文章:

  • 读书笔记-《数据结构与算法》-摘要2[冒泡排序]
  • 火狐,要完了!
  • Python绘制几种常见的时序分析图
  • 数字图像处理(实践篇) 十六 基于分水岭算法的图像分割
  • 视频批量剪辑方法:AI智剪创新力,批量剪辑新风潮
  • mybatisplus调用oracle存储过程
  • Selenium/webdriver介绍以及工作原理
  • Day18——JDK新特性
  • vue3学习笔记
  • pbootcms建站
  • P1047 [NOIP2005 普及组] 校门外的树题解
  • Linux shell编程学习笔记34:eval 命令
  • Elastic Support Hub 转向语义搜索
  • 【广州华锐互动VRAR】VR戒毒科普宣传系统有效提高戒毒成功率
  • 常用的DDL:创建表、删除表、添加列、修改列、添加主键、外键、索引
  • 【EOS】Cleos基础
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 2019.2.20 c++ 知识梳理
  • Angular2开发踩坑系列-生产环境编译
  • flask接收请求并推入栈
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • React的组件模式
  • SpiderData 2019年2月25日 DApp数据排行榜
  • web标准化(下)
  • XForms - 更强大的Form
  • 测试如何在敏捷团队中工作?
  • 番外篇1:在Windows环境下安装JDK
  • 今年的LC3大会没了?
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 算法系列——算法入门之递归分而治之思想的实现
  • 小程序01:wepy框架整合iview webapp UI
  • 学习JavaScript数据结构与算法 — 树
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • AI算硅基生命吗,为什么?
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #pragma pack(1)
  • $forceUpdate()函数
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (C++20) consteval立即函数
  • (C语言)二分查找 超详细
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (南京观海微电子)——I3C协议介绍
  • (全注解开发)学习Spring-MVC的第三天
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转载)hibernate缓存
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)