2818: Gcd

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 8172  Solved: 3609

Description

给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.

Input

一个整数N

Output

如题

Sample Input

4

Sample Output

4

HINT

hint

对于样例(2,2),(2,4),(3,3),(4,2)

1<=N<=10^7

莫比乌斯反演模板题

代码里用到了分块的思想,

因为对于1<=i<=n中的每个i,n/i是非严格递减的,所以会出现一个区间的n/i是相同的,这样我们就可以预处理mu函数的前n项和,然后由这样的分块思想一次计算一个区间的数,使复杂度大大减少。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <cmath>
#include <vector>
#include <bitset>
#define max_ 11000000
#define inf 0x3f3f3f3f
#define ll long long
#define les 1e-8
#define mod 364875103
using namespace std;
bool vis[max_];
int prime[max_];
int pl=0;
ll mu[max_];
ll pre[max_];
int n;
void getmu()
{mu[1]=1;pre[1]=1;for(int i=2;i<max_;i++){if(vis[i]==false){prime[++pl]=i;mu[i]=-1;}for(int j=1;j<=pl&&prime[j]*i<max_;j++){vis[prime[j]*i]=true;if(i%prime[j]==0){mu[i*prime[j]]=0;break;}elsemu[prime[j]*i]=-mu[i];}pre[i]=pre[i-1]+mu[i];}
}
ll cal(int n,int m)
{if(n>m)swap(n,m);ll ans=0;int end;for(int i=1;i<=n;i=end+1){end=min(n/(n/i),m/(m/i));ans+=(pre[end]-pre[i-1])*(n/i)*(m/i);}return ans;
}
int main(int argc, char const *argv[]) {getmu();scanf("%d",&n);ll ans=0;for(int i=1;i<=pl&&prime[i]<=n;i++){ans+=cal(n/prime[i],n/prime[i]);}printf("%lld\n",ans );return 0;
}

HYSBZ - 2818 Gcd —— 莫比乌斯反演相关推荐

  1. BZOJ 2820 YY的GCD 莫比乌斯反演

    2820: YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y) ...

  2. BZOJ 2820 YY的GCD 莫比乌斯反演

    题意:链接 方法:莫比乌斯反演 解析: 这题跟上一篇博客有一点差别,当然我们能够考虑枚举素数这个大暴力.只是当你A掉这道题后发现正解?都将近5s时.就放弃了这个念头. 相同的式子我们能够直接搬过来.p ...

  3. 【bzoj2820】YY的GCD 莫比乌斯反演

    题目描述 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必然不会了,于是 ...

  4. YY的GCD 莫比乌斯反演

    ---题面--- 题解: $ans = \sum_{x = 1}^{n}\sum_{y = 1}^{m}\sum_{i = 1}^{k}[gcd(x, y) == p_{i}]$其中k为质数个数 $$ ...

  5. bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛

    Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...

  6. [洛谷P2257] YY的GCD (莫比乌斯反演)

    YY的GCD 题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻× ...

  7. HYSBZ 2818 Gcd

    Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sa ...

  8. HYSBZ - 1101——莫比乌斯反演

    [题目描述] HYSBZ - 1101 [题目分析] 昨天测试出了一道差不多的题目,我只能想到暴力,各种优化,最后都是运行了好久TLE,最后才知道要用到莫比乌斯反演,就想着今天研究一下,得出的结论就是 ...

  9. 【Project Euler】530 GCD of Divisors 莫比乌斯反演

    [题目]GCD of Divisors [题意]给定f(n)=Σd|n gcd(d,n/d)的前缀和F(n),n=10^15. [算法]莫比乌斯反演 [题解]参考:任之洲数论函数.pdf 这个范围显然 ...

最新文章

  1. StarlingMVC简介,原理解说及示例源码
  2. 基于GUI的mcc编译和dll生成
  3. 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
  4. 2.1.1 正则化基本介绍
  5. springcloud微服务多节点高性能、高可用、高并发部署
  6. android 多媒体文件信息,Android如何获取多媒体文件信息
  7. 给定一个介于0到1之间的实数(如0.625),打印他的二进制表示
  8. (六)Value Function Approximation-LSPI code (3)
  9. 百度地图坐标和高德地图坐标转换
  10. 计算机一级考试基本操作是什么,计算机一级等级考试试题基本操作总结
  11. 2020年最全易语言安装与配置使用教程
  12. 二元函数可导与可微的关系_如何理解多元函数可微与可偏导的关系?
  13. 用java编写中国象棋_如何用Java实现网络中国象棋室(一)
  14. AMD64(x86_64)架构abi文档:上
  15. 内向性格的人应该如何选择职业?
  16. python数字华容道
  17. The specified module could not be found的解决办法
  18. 多线程编程核心技术总结(读周志明书籍的总结)
  19. 热敏电阻VS模拟温度传感器
  20. 锂电池采购成本多次上涨,如何利用数字化采购管理系统高效降本?

热门文章

  1. ES-PHP 聚合查询时 No alive nodes found in your cluster
  2. 网易云音乐移动端项目实战(分解下)
  3. Cmder | 一款命令行增强工具
  4. JAVA面向对象(OOP)-class 类
  5. 弘辽科技:淘宝直通车ROI怎么提升?直通车ROI多少正常?
  6. Android存储系统-MountService 和vold 对外置存储的管理(2)
  7. 事件的独立和事件互不相容两个概念的区别
  8. FreeBSD下查看服务器型号和硬件信息
  9. ftp登录成功,无法取得列表
  10. uni-app app项目运行至夜神模拟器