题目是给你一个空间,和一个点(n,n,n),求从原点出发能够直接接触多少个点(不经过任何一个点)?

典型的mobius反演即可。

首先,ans=3,因为(1,0,0),(0,1,0),(0,0,1)这三个点必看。

其次别在三个平面内反演一次,算出三个坐标轴面的可见点数。

最后在空间反演一次,即可。反演的方法都是分块即可。

召唤代码君:

#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 1001000
typedef long long ll;
using namespace std; int mu[maxn],smu[maxn],pri[maxn];
ll n;
ll f[maxn],g[maxn]; void getprim_mu()
{
for (int i=1; i<maxn; i++) mu[i]=1;
for (int i=2; i<maxn; i++)
{
if (pri[i]) continue;
mu[i]=-mu[i];
for (int j=i+i; j<maxn; j+=i) pri[j]=1,mu[j]=-mu[j];
if (maxn/i>=i) for (int j=i*i; j<maxn; j+=i*i) mu[j]=0;
}
for (int i=1; i<maxn; i++) smu[i]=smu[i-1]+mu[i];
} ll getnum(ll N)
{
int next;
ll ans=0;
for (int i=1; i<=N; i=next+1)
{
next=N/(N/i);
ans+=(smu[next]-smu[i-1])*(N/i)*(N/i);
}
return ans;
} void _init()
{
scanf("%lld",&n);
f[1]=getnum(n);
} int gcd(int A,int B) { return B==0?A:gcd(B,A%B); } int main()
{
getprim_mu();
int T;
ll ans;
scanf("%d",&T);
while (T--)
{
_init();
ans=3+3*f[1];
for (int i=1,next; i<=n; i=next+1)
{
next=n/(n/i);
ans+=(n/i)*(n/i)*(n/i)*(smu[next]-smu[i-1]);
}
printf("%lld\n",ans);
}
return 0;
}

  

SPOJ_VLATTICE的更多相关文章

随机推荐

  1. 【总结】浅谈ref与out

    ref——仅仅是一个地址 (1)当一个方法或函数在使用ref作为参数时,在方法中或函数中对ref参数所做的更改都将反映在该变量中. (2)如果要使用ref参数,则必须将参数作为ref显示传递到方法中. ...

  2. 没听说过这些,就不要说你懂并发了,two。

    引言 为了更加形象的描述并发的基础知识,因此本文LZ采用了园子里一度大火的标题形式——“没听说过XXXX,就不要说你XXXX了”.希望能够给猿友们一个醒目的警醒,借此来普及并发的基础知识,也讨论一下这 ...

  3. hdu1272小希的迷宫(并查集判断回路和是否连通)

    传送门 迷宫中不能有回路,还要连通 如果最后集合数是一个那就是连通,否则不联通 要合并的两个顶点在相同集合内,表示出现了回路 输入时注意一下 #include<bits/stdc++.h> ...

  4. 网易公开课[一万分钟]《office办公达人养成计划》

    note: Shift表示移动 Ctrl表示复制 Excel: 快速选中单元格: 选中表格左上角Ctrl+A Ctrl+方向键,跳到行或列的尽头 Ctrl+Shift+方向键,选中一行或一列 Shif ...

  5. CentOS安装GoAccess

    官网 https://goaccess.io/ yum -y install glib2 glib2-devel ncurses ncurses-devel GeoIP GeoIP-devel安装依赖 ...

  6. Docker Manager for Kubernetes

    一.Kubernetes介绍 Kubernets是Google开源的容器集群系统,是基于Docker构建一个容器的调度服务,提供资源调度,均衡容灾,服务注册,动态伸缩等功能套件: Kubernets提 ...

  7. [Lua] try catch实现

    参考了https://blog.csdn.net/waruqi/article/details/53649634这里的代码,但实际使用时还有些问题,修改后在此记录一下. -- 异常捕获 functio ...

  8. VS Code配置初探

    之前一直在用 Webstorm,看现在 VS Code 热度那么高,想着尝试一下. 熟悉编辑器的快捷键 VS Code 快捷键一览 安装使用到的插件 Chinese(修改你的编辑器语言,默认英文) E ...

  9. Netty源码分析第5章(ByteBuf)---->第9节: ByteBuf回收

    Netty源码分析第五章: ByteBuf 第九节: ByteBuf回收 之前的章节我们提到过, 堆外内存是不受jvm垃圾回收机制控制的, 所以我们分配一块堆外内存进行ByteBuf操作时, 使用完毕 ...

  10. ubuntu16.04 CUDA, CUDNN 安装

    这次介绍的是使用 tensorflow1.8, cuda9.0, cudnn7.0的版本 https://developer.nvidia.com/cuda-90-download-archive 下 ...