BZOJ2818: Gcd 莫比乌斯反演
2023-11-11 07:10:32
分析:筛素数,然后枚举,莫比乌斯反演,然后关键就是分块加速(分块加速在上一篇文章)
#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 ;
}
最新文章
- threading示例
- poj1981Circle and Points(单位圆覆盖最多的点)
- systemd的原理和适用方法
- HDU 5762 Teacher Bo (暴力)
- [android]netd与NetworkManagementService初印象
- imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Corrupt JPEG data: 1 extraneous bytes be
- js判断访问者是否来自移动端代码
- ACM第五次积分赛
- SQL TOP分页
- w 命令详解
- SQL 行转列的运用
- robot framework
- 【Java基础】char
- 又拍云 Node.js 实现文件上传、删除
- Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式
- 【转载】为什么任何随便输入的账号使用SYSDBA权限都能登陆oracle
- import和require的区别
- 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
- Docker配置国内加速器加速镜像下载的方法
- LintCode: Delete Node in the Middle of Singly Linked List