对于这道题,我们要求的是 \(\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. Flink run提交参数

    折腾了好几天,终于搞定了Flink run提交参数,记录一下. 背景: 之前一直报错,akka,AskTimeoutException,尝试添加akka.ask.timeout=120000s, 依然 ...

  2. 拾色器,可以取出电脑屏幕的任何颜色,ui以及程序员前端等常用软件,文件很小,300K

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处. 今天给大家介绍一个小软件,挺实用的,叫做拾色器. 用途:取出电脑屏幕的任意颜色,当你 ...

  3. APICloud数据云3.0 -- 让后端业务更简单

    近年来,各类移动端应用层出不穷,app.小程序已成为企业业务数字化的必然选择,围绕互联网产品的技术创新与开发者生态,正在历经行业发展的又一次革新. APICloud作为国内领先的移动应用开发平台,一直 ...

  4. .NET5.0 单文件发布打包操作深度剖析

    .NET5.0 单文件发布打包操作深度剖析 前言 随着 .NET5.0 Preview 8 的发布,许多新功能正在被社区成员一一探索:这其中就包含了"单文件发布"这个炫酷的功能,实 ...

  5. Java实现IO通信(服务器篇)

    Java实现IO通信(服务器篇) 如何利用java实现我们的通信呢?首先我们了解一下什么是通信?通信的机制是怎样的? 首先来讨论一下什么是通信?通信,指人与人或人与自然之间通过某种行为或媒介进行的信息 ...

  6. unity3d android动态更新dll

    基本是参考这篇文章:http://blog.sina.com.cn/s/blog_9e5d42ee0102vvtg.html,进行了增删一波. 大略说一下基本步骤:1.下载mono源码,修改源码,编译 ...

  7. FZU - 2038 -E - Another Postman Problem (思维+递归+回溯)

    Chinese Postman Problem is a very famous hard problem in graph theory. The problem is to find a shor ...

  8. Linq 下的扩展方法太少了,您期待的 MoreLinq 来啦

    一:背景 1. 讲故事 前几天看同事在用 linq 给内存中的两个 model 做左连接,用过的朋友都知道,你一定少不了一个叫做 DefaultIfEmpty 函数,这玩意吧,本来很流畅的 from. ...

  9. 使用wangEditor富文本编辑器

    客户端配置说明 下载 百度网盘地址:点我下载 下载密码:x09x 使用 首先要引入wangEditor的js文件,然后引入jQuery 然后在body里: <body> <butto ...

  10. jenkins参数传递

    官方说明:https://wiki.jenkins.io/display/JENKINS/Parameterized+Build 1.添加参数传递 参数类型解析: 2.在 Execute shell ...