1. #include<bits/stdc++.h>
  2. #define LL long long
  3. using namespace std;
  4. const int maxn=1e7+;
  5. bool vis[maxn];
  6. int prime[maxn];
  7. int mu[maxn];
  8. int sum1[maxn];
  9. int sum2[maxn];
  10. int tot=;
  11. void get_mu()// mo bi su si han shu
  12. {
  13. mu[]=; vis[]=;
  14. for(int i=;i<maxn;i++) // prime = 0; other = 1;
  15. {
  16. if(!vis[i]){ prime[++tot]=i; mu[i]=-;}
  17. for(int j=;j<=tot&& prime[j]*i<maxn;j++)
  18. {
  19. vis[prime[j]*i]=;
  20. if(i%prime[j]==)break;
  21. mu[i*prime[j]]=-mu[i];
  22. }
  23. }
  24. for(int i=;i<=tot;i++)
  25. {
  26. for(int j=prime[i];j<maxn;j+=prime[i])
  27. {
  28. sum1[j]+=mu[j/prime[i]];
  29. }
  30. }
  31. //for(int i=1;i<maxn;i++) sum2[i]=sum2[i-1]+sum1[i];
  32. }
  33. int main()
  34. {
  35. get_mu();
  36. int n; cin>>n;
  37. LL ans=;
  38. for(int i=;i<=n;i++)
  39. {
  40. ans+=1LL*(n/i)*(n/i)*sum1[i];
  41. }
  42. cout<<ans<<endl;
  43. }

过度代码

整除分块  (看起来更麻烦)

  1. #include<bits/stdc++.h>
  2. #define LL long long
  3. using namespace std;
  4. const int maxn=1e7+;
  5. bool vis[maxn];
  6. int prime[maxn];
  7. int mu[maxn];
  8. int sum1[maxn];
  9. int sum2[maxn];
  10. int tot=;
  11. void get_mu()// mo bi su si han shu
  12. {
  13. mu[]=; vis[]=;
  14. for(int i=;i<maxn;i++) // prime = 0; other = 1;
  15. {
  16. if(!vis[i]){ prime[++tot]=i; mu[i]=-;}
  17. for(int j=;j<=tot&& prime[j]*i<maxn;j++)
  18. {
  19. vis[prime[j]*i]=;
  20. if(i%prime[j]==)break;
  21. mu[i*prime[j]]=-mu[i];
  22. }
  23. }
  24. for(int i=;i<=tot;i++)
  25. {
  26. for(int j=prime[i];j<maxn;j+=prime[i])
  27. {
  28. sum1[j]+=mu[j/prime[i]];
  29. }
  30. }
  31. for(int i=;i<maxn;i++) sum2[i]=sum2[i-]+sum1[i];
  32. }
  33. int main()
  34. {
  35. get_mu();
  36. int n; cin>>n;
  37. LL ans=;
  38. //for(int i=1;i<=n;i++) ans+=1LL*(n/i)*(n/i)*sum1[i];
  39. for(int l=,r;l<=n;l=r+)
  40. {
  41. r=n/(n/l); // l-r 区间相同值 区间值n/l
  42. ans+=1LL*(n/l)*(n/l)*(sum2[r]-sum2[l-]);
  43. }
  44. cout<<ans<<endl;
  45. }

P2568 莫比乌斯反演+整除分块的更多相关文章

  1. [P4450] 双亲数 - 莫比乌斯反演,整除分块

    模板题-- \[\sum\limits_{i=1}^a\sum\limits_{j=1}^b[(i,j)=k] = \sum\limits_{i=1}^a\sum\limits_{j=1}^b[k|i ...

  2. Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 莫比乌斯反演 1101: [POI2007]Zap 设 \(f(i)\) 表示 \(( ...

  3. 莫比乌斯反演&整除分块学习笔记

    整除分块 用于计算$\sum_{i=1}^n f(\lfloor{n/i} \rfloor)*i$之类的函数 整除的话其实很多函数值是一样的,对于每一块一样的商集中处理即可 若一个商的左边界为l,则右 ...

  4. 洛谷 P2257 - YY的GCD(莫比乌斯反演+整除分块)

    题面传送门 题意: 求满足 \(1 \leq x \leq n\),\(1 \leq y \leq m\),\(\gcd(x,y)\) 为质数的数对 \((x,y)\) 的个数. \(T\) 组询问. ...

  5. [POI2007]ZAP-Queries (莫比乌斯反演+整除分块)

    [POI2007]ZAP-Queries \(solution:\) 唉,数论实在有点烂了,昨天还会的,今天就不会了,周末刚证明的,今天全忘了,还不如早点写好题解. 这题首先我们可以列出来答案就是: ...

  6. 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块

    https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...

  7. [国家集训队] Crash的数字表格 - 莫比乌斯反演,整除分块

    考虑到\(lcm(i,j)=\frac{ij}{gcd(i,j)}\) \(\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}\) \(\sum_{d=1}^{n} ...

  8. 洛谷 P5518 - [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题(莫比乌斯反演+整除分块)

    洛谷题面传送门 一道究极恶心的毒瘤六合一题,式子推了我满满两面 A4 纸-- 首先我们可以将式子拆成: \[ans=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\p ...

  9. 洛谷 - UVA11424 - GCD - Extreme (I) - 莫比乌斯反演 - 整除分块

    https://www.luogu.org/problemnew/show/UVA11424 原本以为是一道四倍经验题来的. 因为输入的n很多导致像之前那样 \(O(n)\) 计算变得非常荒谬. 那么 ...

随机推荐

  1. 实现我的第一个Java程序

    第一步.打开记事本 第二步.代码编写 public class Hello{ public static void main( String[] args){ System.out.println(& ...

  2. python之路-模块初识

    # sys模块 import sys #print (sys.path) #打印环境变量 print (sys.arge) print (sys.arge[2]) # os模块 import os # ...

  3. matplotlib图表组成元素

    一.函数 1.plot()    --   展示变量的趋势与变化 用法: plt.plot(x,y,ls="-",lw=2,label="plot figure" ...

  4. 虚拟机网络NAT模式配置静态IP

    虚拟机网络连接方式 安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口. 虚拟机常见有三种网络连接方式 ...

  5. BigDecimal类的用法

    (一)BigDecimal类的常用的几个构造方法 BigDecimal(int):将int表示形式转换为BigDecimal对象 BigDecimal(String):将字符串表示形式转换为BigDe ...

  6. LeetCode 145 二叉树的后序遍历(非递归)

    题目: 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解题思路: 1 ...

  7. 20175224 2018-2019-2 《Java程序设计》第七周学习总结

    教材学习内容总结 第八章 常用实用类 String类 构造String对象:常量对象:String对象:引用String常量. 字符串的并置:String对象使用“+”进行并置运算,即首尾相接. 字符 ...

  8. CSS规范—分类方法(NEC规范学习笔记)

    一.CSS文件的分类和引用顺序 Css按照性质和用途,将Css文件分成“公共型样式”.“特殊型样式”.“皮肤型样式”,并以此顺序引用,有需要可以添加版本号 1.公共型样式:包含以下几个部分 标签的重置 ...

  9. 使用WebStorm报错 Namespace 'v-bind' is not bound

    一:报错描述:                Namespace 'v-bind' is not bound.Namespace 'v-on' is not bound 等 二:问题说明:      ...

  10. ThreadPoolExecutor使用

    构造方法参数讲解  参数名 作用 corePoolSize 核心线程池大小 maximumPoolSize 最大线程池大小 keepAliveTime 线程池中超过corePoolSize数目的空闲线 ...