BZOJ2818: Gcd 莫比乌斯反演
2024-07-28 03:34:48
分析:筛素数,然后枚举,莫比乌斯反演,然后关键就是分块加速(分块加速在上一篇文章)
#include<cstdio>
#include<cstring>
#include<queue>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
typedef long long LL;
const int N=1e7+;
const int INF=0x3f3f3f3f;
bool vis[N];
int prime[N],mu[N],cnt;
void getmu()
{
mu[] = ;
for(int i=; i<=N-; i++)
{
if(!vis[i])
{
prime[++cnt] = i;
mu[i] = -;
}
for(int j=; j<=cnt&&i*prime[j]<=N-; j++)
{
vis[i*prime[j]] = ;
if(i%prime[j]) mu[i*prime[j]] = -mu[i];
else
{
mu[i*prime[j]] = ;
break;
}
}
}
}
int main(){
getmu();
for(int i=;i<=N-;++i)mu[i]+=mu[i-];
int n;
scanf("%d",&n);
LL ans=;
for(int i=;i<=cnt&&prime[i]<=n;++i){
int l=n/prime[i];
for(int k=,j;k<=l;k=j+){
j=l/(l/k);
ans+=1ll*(mu[j]-mu[k-])*(l/k)*(l/k);
}
}
printf("%lld\n",ans);
return ;
}
最新文章
- C++_系列自学课程_第_7_课_数组_《C++ Primer 第四版》
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 多软件系统集成缓存体系改进
- 构建高可用ZooKeeper集群(转载)
- VMware下虚拟机的转移
- MySQL数据库“局部”乱码
- ZOJ 3967 Colorful Rainbows --栈的应用
- HDU 5044 (树链剖分+树状数组+点/边改查)
- C程序设计语言练习题1-17
- AOP 之 6.1 AOP基础 ——跟我学spring3(转)
- 高可用的池化 Thrift Client 实现(源码分享)
- arcpy.mapping-认识arcpy.mapping
- linux系统各种乱码问题
- 通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽
- C_使用clock()函数获取程序执行时间
- ztree模糊筛选展开选中节点
- Html链接标签:
- memoization提升递归效率
- javaWeb代码工程统计
- c# 简易绘制C语言头文件包含关系图 v2.0
- Linux中Subversion配置实例