#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn=1e7+;
bool vis[maxn];
int prime[maxn];
int mu[maxn];
int sum1[maxn];
int sum2[maxn];
int tot=;
void get_mu()// mo bi su si han shu
{
mu[]=; vis[]=;
for(int i=;i<maxn;i++) // prime = 0; other = 1;
{
if(!vis[i]){ prime[++tot]=i; mu[i]=-;}
for(int j=;j<=tot&& prime[j]*i<maxn;j++)
{
vis[prime[j]*i]=;
if(i%prime[j]==)break;
mu[i*prime[j]]=-mu[i];
}
}
for(int i=;i<=tot;i++)
{
for(int j=prime[i];j<maxn;j+=prime[i])
{
sum1[j]+=mu[j/prime[i]];
}
}
//for(int i=1;i<maxn;i++) sum2[i]=sum2[i-1]+sum1[i];
}
int main()
{
get_mu();
int n; cin>>n;
LL ans=;
for(int i=;i<=n;i++)
{
ans+=1LL*(n/i)*(n/i)*sum1[i];
}
cout<<ans<<endl;
}

过度代码

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

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn=1e7+;
bool vis[maxn];
int prime[maxn];
int mu[maxn];
int sum1[maxn];
int sum2[maxn];
int tot=;
void get_mu()// mo bi su si han shu
{
mu[]=; vis[]=;
for(int i=;i<maxn;i++) // prime = 0; other = 1;
{
if(!vis[i]){ prime[++tot]=i; mu[i]=-;}
for(int j=;j<=tot&& prime[j]*i<maxn;j++)
{
vis[prime[j]*i]=;
if(i%prime[j]==)break;
mu[i*prime[j]]=-mu[i];
}
}
for(int i=;i<=tot;i++)
{
for(int j=prime[i];j<maxn;j+=prime[i])
{
sum1[j]+=mu[j/prime[i]];
}
}
for(int i=;i<maxn;i++) sum2[i]=sum2[i-]+sum1[i];
}
int main()
{
get_mu();
int n; cin>>n;
LL ans=;
//for(int i=1;i<=n;i++) ans+=1LL*(n/i)*(n/i)*sum1[i];
for(int l=,r;l<=n;l=r+)
{
r=n/(n/l); // l-r 区间相同值 区间值n/l
ans+=1LL*(n/l)*(n/l)*(sum2[r]-sum2[l-]);
}
cout<<ans<<endl;
}

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. Vue移动端项目总结

    使用Vue项目写了一个移动端项目,然后又把项目硬生生的抽离了组件,一直忙着写RN项目没有时间总结心得,今天上午终于下定决心,写点总结. 1.position:absolute: 定位的时候不同手机的浏 ...

  2. socket keepalive理解

    java socket编程中有个keepalive选项,看到这个选项经常会误解为长连接,不设置则为短连接,实则不然. socket连接建立之后,只要双方均未主动关闭连接,那这个连接就是会一直保持的,就 ...

  3. 浅析Hashmap和Hashtable

    一.Hashmap不是线程安全的,而Hashtable是线程安全的 通过查看源码可以发现,hashmap类中的方法无synchronized关键字,而hashtable类中的方法有synchroniz ...

  4. Python基础(条件判断,循环,占位符等)

    Python 自动化 系统开发用的语言和自动化脚本可以不同 学习peython可用于: 网路爬虫,数据分,web开发,人工智能,自动化运维,自动化测试,嵌入式,黑客 第三方库比较全 脚本语言:功能单一 ...

  5. Python机器学习(python简介篇)

    1.Python 数据类型 Python 内置的常用数据类型共有6中: 数字(Number).布尔值(Boolean).字符串(String).元组(Tuple).列表(List).字典(Dictio ...

  6. springboot整合mybatics PLUS

    首先添加maven依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactI ...

  7. 关于Hibernate级联更新插入信息时提示主键不为空的问题“org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1 ”

    org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual ...

  8. java 二分法学习

    假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1.代码如下: package ...

  9. Spring 内部注入bean

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  10. linux 保存git的账号密码

    今天在弄jenkins一建发版,遇到了git下载每次都要输入账号密码,所以百度一下,使用一下方法,搞定 一.通过文件方式 1.在~/下, touch创建文件 .git-credentials, 用vi ...