【BZOJ2818】Gcd(莫比乌斯反演)

题面

Description

给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的

数对(x,y)有多少对.

Input

一个整数N

Output

如题

Sample Input

4

Sample Output

4

HINT

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

1<=N<=10^7

题解

题目要求的:

\[\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)\_is\_prime]
\]

把因数提出来

\[\sum_{d=1}^{n}[d\_is\_prime]\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}[gcd(i,j)==1]
\]

后面那个不说了

很显然的莫比乌斯反演

参考这道题目,一模一样的东西

如果不考虑\(d\_is\_prime\)这个东西

很显然的数论分块

加上了这个限制

就再预处理一个素数个数的前缀和就行了

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<algorithm>
  7. #include<set>
  8. #include<map>
  9. #include<vector>
  10. #include<queue>
  11. using namespace std;
  12. #define MAX 10000000
  13. #define ll long long
  14. inline int read()
  15. {
  16. int x=0,t=1;char ch=getchar();
  17. while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
  18. if(ch=='-')t=-1,ch=getchar();
  19. while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
  20. return x*t;
  21. }
  22. int n,m;
  23. bool zs[MAX+1000];
  24. ll pri[MAX+1000],tot,smu[MAX+1000],spr[MAX+1000];
  25. long long ans=0;
  26. void pre()
  27. {
  28. zs[1]=true;smu[1]=1;
  29. for(int i=2;i<=n;++i)
  30. {
  31. if(!zs[i])pri[++tot]=i,smu[i]=-1;
  32. for(int j=1;j<=tot&&i*pri[j]<=n;++j)
  33. {
  34. zs[i*pri[j]]=true;
  35. if(i%pri[j]==0){smu[i*pri[j]]=0;break;}
  36. else smu[i*pri[j]]=-smu[i];
  37. }
  38. }
  39. for(int i=1;i<=n;++i)smu[i]+=smu[i-1];
  40. for(int i=1;i<=n;++i)spr[i]=spr[i-1]+(!zs[i]?1:0);
  41. }
  42. ll Solve(int a)
  43. {
  44. int i=1,j;
  45. long long ret=0;
  46. while(i<=a)
  47. {
  48. j=a/(a/i);
  49. ret+=1ll*(smu[j]-smu[i-1])*(a/i)*(a/i);
  50. i=j+1;
  51. }
  52. return ret;
  53. }
  54. int main()
  55. {
  56. n=read();
  57. int i=1,j;
  58. pre();
  59. while(i<=n)
  60. {
  61. j=n/(n/i);
  62. ans+=(spr[j]-spr[i-1])*Solve(n/i);
  63. i=j+1;
  64. }
  65. printf("%lld\n",ans);
  66. return 0;
  67. }

【BZOJ2818】Gcd(莫比乌斯反演)的更多相关文章

  1. BZOJ2818: Gcd 莫比乌斯反演

    分析:筛素数,然后枚举,莫比乌斯反演,然后关键就是分块加速(分块加速在上一篇文章) #include<cstdio> #include<cstring> #include< ...

  2. [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块)

    [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块) 题面 给定N, M,求\(1\leq x\leq N, 1\leq y\leq M\)且gcd(x, y)为质数的(x, y)有多少对. ...

  3. 【BZOJ2818】Gcd [莫比乌斯反演]

    Gcd Time Limit: 10 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 给定整数N,求1<=x,y&l ...

  4. HDU1695 GCD(莫比乌斯反演)

    传送门 看了1个多小时,终于懂了一点了 题目大意:给n,m,k.求gcd(x,y) = k(1<=x<=n, 1<=y<=m)的个数 思路:令F(i)表示i|gcd(x,y)的 ...

  5. hdu 1695 GCD 莫比乌斯反演入门

    GCD 题意:输入5个数a,b,c,d,k;(a = c = 1, 0 < b,d,k <= 100000);问有多少对a <= p <= b, c <= q <= ...

  6. 洛谷P2257 YY的GCD 莫比乌斯反演

    原题链接 差不多算自己推出来的第一道题QwQ 题目大意 \(T\)组询问,每次问你\(1\leqslant x\leqslant N\),\(1\leqslant y\leqslant M\)中有多少 ...

  7. HYSBZ - 2818 Gcd (莫比乌斯反演)

    莫比乌斯反演的入门题,设 \(F(x): gcd(i,j)\%x=0\) 的对数,\(f(x): gcd(i,j)=x\)的对数. 易知\[F(p) = \lfloor \frac{n}{p} \rf ...

  8. Luogu P2257 YY的GCD 莫比乌斯反演

    第一道莫比乌斯反演...$qwq$ 设$f(d)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]$ $F(n)=\sum_{n|d}f(d)=\lfloor \frac{N ...

  9. BZOJ 2818 Gcd (莫比乌斯反演 或 欧拉函数)

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 2534  Solved: 1129 [Submit][Status][Discu ...

  10. BZOJ 2820 luogu 2257 yy的gcd (莫比乌斯反演)

    题目大意:求$gcd(i,j)==k,i\in[1,n],j\in[1,m] ,k\in prime,n,m<=10^{7}$的有序数对个数,不超过10^{4}次询问 莫比乌斯反演入门题 为方便 ...

随机推荐

  1. (转)CocoaPods:管理Objective-c 程序中各种第三方开源库关联

    在我们的iOS程序中,经常会用到多个第三方的开源库,通常做法是去下载最新版本的开源库,然后拖拽到工程中. 但是,第三方开源库的数量一旦比较多,版本的管理就非常的麻烦.有没有什么办法可以简化对第三方库的 ...

  2. 洛谷 P2622 关灯问题II【状压DP;隐式图搜索】

    题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j]为1,那么当这盏灯开了的时 ...

  3. 利用ajax获取网页表单数据,并存储到数据库之二(使用SSH)

    上篇介绍了如何使用JDBC链接ORACLE数据库实现对数据库的增删改查,本例是使用框架SSH来对数据库的数据进行操作. 首先说框架,现在流行的框架很多,如Struts.Hibernate.Spring ...

  4. spring,property not found on type

    刚开始学spring mvc ,遇到这个报错. jsp页面 user 实体类 public class User { private String name; private int age; pri ...

  5. 老男孩Python全栈开发(92天全)视频教程 自学笔记17

    day17课程内容: 装饰器回顾练习 登录功能: #登录京东,不同的页面,选择页面,然后不同的登录方式with open('作业5.1jingdong','w',encoding='utf8') as ...

  6. mysql 学习心得5

    常用函数 字符串函数 concat(S1,S2....,Sn) 链接s1 s2 ...... 任何字符串和null链接显示为null insert(str,x,y,instr)  将str从x位开始y ...

  7. 有状态InheritableThreadLocal 配合 JDK8 ,异步方法调用

    我们可以把一个类的作用域注解为 @Scope(scopeName = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode. ...

  8. span设置宽度有效无效问题

    在html中如何设定span的宽度?这看上去是个很简单的问题,似乎用style中的width属性就可以.例如, <!DOCTYPE html PUBLIC "-//W3C//DTD X ...

  9. linux RHCS集群 高可用web服务器

    RHCS集群,高可用服务器 高可用 红帽集群套件,提供高可用性,高可靠性,负载均衡,快速的从一个节点切换到另一个节点(最多16个节点)负载均衡 通过lvs提供负载均衡,lvs将负载通过负载分配策略,将 ...

  10. Mycat 分布式事务的实现

    引言:Mycat已经成为了一个强大的开源分布式数据库中间件产品.面对企业应用的海量数据事务处理,是目前最好的开源解决方案.但是如果想让多台机器中的数据保存一致,比较常规的解决方法是引入"协调 ...