SPOJ_VLATTICE
题目是给你一个空间,和一个点(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的更多相关文章
随机推荐
- $('#uplodFileForm')[0].submit();
jquery对象在[0]以下是取其相对应的Dom对象,即$("#mainForm")[0] = document.getElementById("mainForm&quo ...
- SpringBoot日记——Web开发篇
准备开始实战啦!~~~~ 我们先来看,SpringBoot的web是如何做web开发的呢?通常的步骤如下: 1.创建springboot应用,指定模块: 2.配置部分参数配置: 3.编写业务代码: 为 ...
- gith命令行使用之上传和删除
git这个工具的功能很强大,而使用git bash的命令行来进行git工具的操作尤为重要.而且我个人认为,用命令行进行git工具的操作比起图形界面的git工具,要更容易理解.图形界面的那个叫Torto ...
- 通俗理解BFS和DFS,附基本模板
1.BFS(宽度优先搜索):使用队列来保存未被检测的节点,按照宽度优先的顺序被访问和进出队列 打个比方:(1)类似于树的按层次遍历 (2)你的眼镜掉在了地上,你趴在地上,你总是先摸离你最近的地方,如果 ...
- 我的Cocos Creator成长之路1环境搭建以及基本的文档阅读
本人原来一直是做cocos-js和cocos-lua的,应公司发展需要,现转型为creator.会在自己的博客上记录自己的成长之路. 1.文档阅读:(cocos的官方文档) http://docs.c ...
- 利用workbench对linux/Ubuntu系统中的mysql数据库进行操作
在上一篇文章中,我分享了在linux中如何安装mysql数据库,但是这只是安装了mysql的服务,并没有图形化管理界面,所以这样子操作起来并没有那么方便,那么现在我们就来实现如何利用在window中安 ...
- webpack3升级为webpack4
写在前面的话:为什么要升级,因为公司目前的项目使用webpack3,但是因为是多页应用,入口估计有一百多个,开发模式下慢得不像话,修改一个文件需要十几秒才编译好,之前的解决方案是减少入口,但是要调试其 ...
- 刨根问底KVO原理
介绍 KVO( NSKeyValueObserving )是一种监测对象属性值变化的观察者模式机制.其特点是无需事先修改被观察者代码,利用 runtime 实现运行中修改某一实例达到目的,保证了未侵入 ...
- eclipse检出SVN代码的详细流程
1.添加SVN资源库位置(未安装SVN,请先安装SVN) 2.因为该项目不是maven项目 所以还需要加入jar包(将项目lib里面的jar都Buile Path) 3.我这个项目需要修改编码格式 右 ...
- Python连接MySQL数据库(pymysql的使用)
本文Python版本3.5.3,mysq版本5.7.23 基本使用 # 导入pymysql模块 import pymysql #连接数据库 conn = pymysql.connect( databa ...