对于这道题,我们要求的是 \(\displaystyle \sum_{i=1}^{N}\sum_{j = 1} ^{N}\) gcd(i,j)为质数

首先我们很容易想出来怎么打暴力,我们可以对于每个 i 和 j 都求一遍他们的gcd 最后累计一下gcd为质数的就完成了。

可是这样得神仙时间复杂度 为O(n^2), 对于这道题,我们肯定 会 TLE。

然后我们只能苦逼的想正解QAQ

然后就开始我们的推柿子时间QAQ

我们考虑这样一个柿子

gcd(x,y) = p

那么这个柿子可以写成 gcd(x' * p , y' * p) = p

提出p来就可以变成 gcd(x',y') = 1; x' = x / p ,y' = y / p ;

这个柿子是不是很熟悉QAQ

gcd(i,j) = 1 不就相当于 \(\displaystyle\sum_{i=1}^{N}\varphi(i)\)​

因为对于每个j 我们要算 有多少个i满足 1 <= i < j 并且 gcd(i,j) = 1。这样的i的数量恰好是

\(\displaystyle\varphi(j)\)

不会的童鞋请看 仪仗队那个题。。。

那么我们考虑每个p的贡献,我们要强制把上面的柿子 乘以二,在减去一。

乘以二其实很简单,因为他每个点 (i,j) 等同于(j,i)这个点,因此我们要强制乘二。

减一呢 是因为当 x' = y' = 1 时 ,即当 x = y = p的时候这个点算了两遍,但(x,y)(x=y)这个数对

只有一个所以要减一。

综上对于每个p,他的贡献就是 \(\displaystyle\sum_{i=1}^{N\over p}\varphi(i)\) *2 -1.

那么有多少个这样的p呢???

其实p就是N以内的质数,对于每个p,求一下他的贡献,在相加,不就可以轻松AC了吗QAQ。。。

那么最后的总柿子就是

\(\displaystyle\sum_{p}\sum_{i=1}^{N\over p}\)​ φ(i)-1 ( p 是1~n的质数)

优化 我们再求p的贡献时,不必要一个个的去求欧拉函数的值,我们可以考虑维护

一下前缀和。这样就会减少不少时间了...

最后附上我的代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1e7+10;
long long n,ans = 0,cnt;
long long prime[N] ,phi[N], tot[N];
bool check[N];
void calc(int n){//边进行欧拉筛,边求欧拉函数
memset(check,-1,sizeof(check));
phi[1] = 1;
for(int i = 2; i <= n; i++){
if(check[i]){
phi[i] = i-1;
prime[++cnt] = i;
}
for(int j = 1; j <= cnt; j++){
if(i * prime[j] > n) break;
check[i*prime[j]] = 0;
if(i % prime[j] == 0){
phi[i*prime[j]] = phi[i] * prime[j];
break;
}
else{/积性函数性质
phi[i*prime[j]] = phi[i] * phi[prime[j]];
}
}
}
for(int i = 1; i <= n; i++) tot[i] = tot[i-1] + phi[i];//前缀和
}
int main(){
scanf("%d",&n);
calc(n);
for(int i = 1; i <= cnt; i++){//枚举每个p
ans += 2 * tot[n/prime[i]] - 1;//求p的贡献
}
printf("%d\n",ans)
return 0;
}

本蒟蒻码风过丑,不喜勿喷。。。。

//手敲不易,点个

最后完美结束,✿✿ヽ(°▽°)ノ✿ QAQ 。。。

P 2568 GCD的更多相关文章

  1. [luogu 2568] GCD (欧拉函数)

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

  2. GCD(洛谷 2568)

    题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入格式 一个整数N 输出格式 答案 输入输出样例 输入 #1 4 输出 #1 4 说明/提示 ...

  3. Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用

    OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...

  4. iOS 多线程之GCD的使用

    在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ...

  5. 【swift】BlockOperation和GCD实用代码块

    //BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...

  6. 修改版: 小伙,多线程(GCD)看我就够了,骗你没好处!

    多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系 ...

  7. GCD的相关函数使用

    GCD 是iOS多线程实现方案之一,非常常用 英文翻译过来就是伟大的中枢调度器,也有人戏称为是牛逼的中枢调度器 是苹果公司为多核的并行运算提出的解决方案 1.一次性函数 dispatch_once 顾 ...

  8. hdu1695 GCD(莫比乌斯反演)

    题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...

  9. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

随机推荐

  1. java初探(1)之登录再探

    https://www.cnblogs.com/lovejune/p/java_login_1.html 上一章内容搭建起了登录应用场景的环境,模拟实现了登录操作,页面与后端数据的交互过程,使用的是异 ...

  2. Hive 高阶应用开发示例(一)

    Hive的一些常用的高阶开发 内容    1.开窗函数   2.行转列,列转行,多行转一行,一行转多行   3.分组: 增强型group   4.排序  5.关联 本次的内容: 内容1 和内容2,采用 ...

  3. 剑指 Offer 19. 正则表达式匹配

    题目描述 请实现一个函数用来匹配包含'. '和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次).在本题中,匹配是指字符串的所有字符匹配整个模式. ...

  4. Spring security OAuth2.0认证授权学习第二天(基础概念-RBAC)

    RBAC 基于角色的访问控制 基于角色的访问控制用代码实现一下其实就是一个if的问题if(如果有角色1){ } 如果某个角色可以访问某个功能,当某一天其他的另一个角色也可以访问了,那么代码就需要变化, ...

  5. H5游戏定制,4大优势助力企业曝光10W+

    H5游戏定制,4大优势助力企业曝光10W+ 移动互联网已成为了人们生活的一部分,普通广告形式已很难吸引用户的眼球,企业要怎样才能将广告更广泛的传播给更多用户呢?根据TOM游戏多年从业经验,为大家分享以 ...

  6. python之Lambda

    Python 匿名函数lambda   lambda表达式在“:”后只能有一个表达式.也就是说,在def中,用return可以返回的也可以放在lambda后面,不能用return返回的也不能定义在py ...

  7. DoS拒绝服务-工具使用hping3、nping等(四)

    Hping3几乎可以定制发送任何tcp/ip数据包,用于测试fw,端口扫描,性能测试 Syn Flood – hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood ...

  8. [LeetCode]647. 回文子串(DP)

    ###题目 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串. 示例 1: 输入: "abc&q ...

  9. CentOS6.10下安装MongoDB和Redis

    安装mongodb 首先考虑离线安装,但是安装过程中在启动服务的时候出现了问题,centOS出于稳定原因考虑,系统自带的glibc版本过低, 而编译需要使用较高版本,这个问题我查询了一下,需要升级gl ...

  10. 微服务架构之SpringCloud

    微服务架构之SpringCloud介绍 1.什么是微服务 2.SpringCloud架构 3.SpringCloud组件 4.微服务相关技术 Docker Jenkins