【反演复习计划】【bzoj2818】gcd
2024-10-20 06:40:51
就是之前的2820的升级版。
把暴力枚举素数改成预处理就随便A了。
#include<bits/stdc++.h>
#define N 10000005
#define ll long long
using namespace std;
int mu[N],vis[N],prime[N],cnt;
long long f[N];
void calcmu(){
cnt=;mu[]=;
memset(f,,sizeof(f));
memset(vis,true,sizeof(vis));
for(int i=;i<N;i++){
if(vis[i])prime[++cnt]=i,mu[i]=-,f[i]=;
for(int j=;j<=cnt;j++){
int t=prime[j]*i;
if(t>N)break;
vis[t]=false;
if(i%prime[j]==){mu[t]=;f[t]=mu[i];break;}
mu[t]-=mu[i];f[t]=mu[i]-f[i];
}
}
for(int i=;i<=N;i++)f[i]+=f[i-];
}
int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return x*f;
}
int main(){
calcmu();int j;int n,m;
int T=;
while(T--){
ll ans=;n=read();m=n;
if(n>m)swap(n,m);
for(int i=;i<=n;i=j+){
j=n/(n/i);
ans+=(f[j]-f[i-])*(n/i)*(m/i);
}
printf("%lld\n",ans);
}
return ;
}
最新文章
- DiskFileItemFactory类的使用
- python学习 流程控制语句
- bzoj2819 Nim
- SVN中Branch和Merge实践
- SQL Server多表多列更新
- vim用法小节
- 堆block和栈block的区分
- CSS3的几个标签速记1
- 深入理解计算机系统第二版习题解答CSAPP 2.5
- Andrew Ng机器学习课程笔记--week3(逻辑回归&;正则化参数)
- 利用ResultFilter实现asp.net mvc 页面静态化
- locate 和 find
- canvas绘制环形进度条
- 西门子S7-300 PLC视频教程(百度网盘)
- MySQL主从复制日常管理维护篇
- MFC中如何显示颜色选择对话框
- Tensorflow &; Python3 做神经网络(视频教程)
- 3-4 1449 web view
- Nchan nginx 支持的开源消息推送模块
- 【[SCOI2008]奖励关】