莫比乌斯反演1003 SPOJ VLATTICE
来源:互联网 发布:用stata怎么导面板数据 编辑:程序博客网 时间:2024/06/07 06:15
题意:
有一个n*n*n的格子,这个格子是(0~n,0~n,0~n)的
从x点能看见y点,代表从x到y连线上没有其他点
问从(0,0,0)能看到多少个点
思路:
之前有个能量收集那道题跟这道题差不多…
考虑gcd(x,y,z)=1
但是这道题要考虑一些特殊情况,有0的存在
假设x,y,z都!=0,Ans1=∑(1<=T<=n,mu(T)(n/T)(n/T)*(n/T))
假设x,y,z有一个0,Ans2=3* ∑(1<=T<=n,mu(T)(n/T)(n/T))因为是x,y,z其中一个,有三种情况
假设x,y,z有两个0,那么只可能是(0,0,1),(0,1,0),(1,0,0)三种情况
所以Ans=Ans1+Ans2+3->∑(1<=T<=n,mu(T)(n/T)(n/T)*(n/T+3)) + 3
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<math.h>#include<queue>#include<stack>#include<string>#include<vector>#include<map>#include<set>using namespace std;#define lowbit(x) (x&(-x))typedef long long LL;const int maxn = 100005;const int inf=(1<<28)-1;#define maxp 1000005bool notprimes[maxp];int primes[maxp];int mu[maxp];void get_mu(){ memset(notprimes,false,sizeof(notprimes)); primes[0]=0; mu[1]=1; for(int i=2;i<maxp;++i) { if(!notprimes[i]) { primes[++primes[0]]=i; mu[i]=-1; } for(int j=1;j<=primes[0];++j) { if((LL)primes[j]*i>=maxp) break; notprimes[i*primes[j]]=true; if(i%primes[j]) mu[i*primes[j]]=-mu[i]; else { mu[i*primes[j]]=0; break;//代表i不是素数,mu[i*primes[j]]必然是0 } } }}LL Pre[maxp];int main(){ get_mu(); Pre[0]=0; for(int i=1;i<maxp;++i) Pre[i]=Pre[i-1]+mu[i]; int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); LL Ans=0; int last; for(int i=1;i<=n;i=last+1) { last=n/(n/i); Ans+=(Pre[last]-Pre[i-1])*(n/i)*(n/i)*(n/i+3); } printf("%lld\n",Ans+3); } return 0;}
0 0
- 莫比乌斯反演1003 SPOJ VLATTICE
- SPOJ VLATTICE - Visible Lattice Points 莫比乌斯反演
- SPOJ VLATTICE(莫比乌斯反演)
- 【莫比乌斯反演】[SPOJ-VLATTICE]Visible Lattice Points
- 【莫比乌斯反演】[SPOJ VLATTICE]Visible Lattice Points
- SPOJ VLATTICE Visible Lattice Points - 莫比乌斯反演
- SPOJ 7001 VLATTICE【莫比乌斯反演】
- SPOJ VLATTICE Visible Lattice Points[莫比乌斯反演]
- [SPOJ VLATTICE]Visible Lattice Points 数论 莫比乌斯反演
- SPOJ VLATTICE Visible Lattice Points (莫比乌斯反演基础题)
- SPOJ VLATTICE Visible Lattice Points (莫比乌斯反演)
- 【SPOJ VLATTICE】Visible Lattice Points——莫比乌斯反演3
- SPOJ 7001 VLATTICE - Visible Lattice Points(莫比乌斯反演)
- SPOJ VLATTICE Visible Lattice Points(莫比乌斯反演入门)
- SPOJ - VLATTICE Visible Lattice Points(gcd(x,y,z)=1的对数/莫比乌斯反演)
- SPOJ VLATTICE Visible Lattice Points 莫比乌兹反演入门题
- spoj 4491 莫比乌斯反演
- SPOJ VLATTICE Visible Lattice Points 初入莫比乌斯
- 在字符串copy函数中引入辅助指针变量
- SICP_Python版:抽象数据的多重表示
- linphone-LinphoneCallParams.java文件分析
- NOIP2016 暑期培训 D1
- Microsoft.XMLHTTP基本用法
- 莫比乌斯反演1003 SPOJ VLATTICE
- 10.2 设计一个函数模板 max <T>求一个数组中最大的元素,并以整数数组和字符数 组进行调用
- nyoj 56 因式分解
- C#控制台 得到一个变量类型的最大,最小值。以int16为例
- BZOJ 2190
- SDUT2506完美网络
- UIGestureRecognizer详解
- 采用JLink+ADS1.2调试uboot的方法
- 10.3 设计一个类模板 store <T>用于存储某一类型的数据,并以整数和字符串进行实 例化