博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SPOJ1007 VLATTICE - Visible Lattice Points
阅读量:5854 次
发布时间:2019-06-19

本文共 1828 字,大约阅读时间需要 6 分钟。

VLATTICE - Visible Lattice Points

no tags 


 

Consider a N*N*N lattice. One corner is at (0,0,0) and the opposite one is at (N,N,N). How many lattice points are visible from corner at (0,0,0) ? A point X is visible from point Y iff no other lattice point lies on the segment joining X and Y. 

 
Input : 
The first line contains the number of test cases T. The next T lines contain an interger N 
 
Output : 
Output T lines, one corresponding to each test case. 
 
Sample Input : 
3 
1 
2 
5 
 
Sample Output : 
7 
19 
175 
 
Constraints : 
T <= 50 
1 <= N <= 1000000

 

 

Description(题意)

N*N*N网格. 一个角落在 (0,0,0),对顶角落是 (N,N,N). 问从(0,0,0)看有多少个格点是可见的?点 X从点Y可见,当且仅当,线段XY上没有其他的点。

Input:

第一行是测试数据个数T。接着有T行每行有一个整数 N.

Output :

输出T行,每行是对应的可见格点的个数。

Sample Input :

3

1

2

5

Sample Output :

7

19

175

 

Constraints :

T <= 50

1 <= N <= 1000000

 

Solution:

#include
#include
#ifdef WIN32#define LL "%I64d"#else#define LL "%lld"#endifusing namespace std;typedef long long ll;const int M=1e6+5;int n,m,T;ll sum[M];int tot,prime[M/3],mu[M];bool check[M];void sieve(){ n=1e6;mu[1]=1; for(int i=2;i<=n;i++){ if(!check[i]) prime[++tot]=i,mu[i]=-1; for(int j=1;j<=tot&&i*prime[j]<=n;j++){ check[i*prime[j]]=1; if(!(i%prime[j])){mu[i*prime[j]]=0;break;} else mu[i*prime[j]]=-mu[i]; } } for(int i=1;i<=n;i++) sum[i]=sum[i-1]+mu[i];}inline ll s2(int x){
return 1LL*x*x;}inline ll s3(int x){
return 1LL*x*x*x;}inline ll solve(int n){ ll ans=3; for(int i=1,pos;i<=n;i=pos+1){ pos=n/(n/i); ans+=s3(n/i)*(sum[pos]-sum[i-1]); ans+=3*s2(n/i)*(sum[pos]-sum[i-1]); } return ans;}int main(){ sieve(); for(scanf("%d",&T);T--;){ scanf("%d",&n); printf(LL"\n",solve(n)); } return 0;}

 

 

 

转载于:https://www.cnblogs.com/shenben/p/6748677.html

你可能感兴趣的文章
ClistCtrl
查看>>
bzoj 3992 [SDOI2015]序列统计——NTT(循环卷积&&快速幂)
查看>>
POJ1006——中国剩余定理
查看>>
【MAC】虚拟机Mac固定分辨率
查看>>
ListActivity的使用
查看>>
VI 你不知道的事
查看>>
文件与键盘输入与输出
查看>>
深度遍历DFS---树
查看>>
SilverLight商业应用程序开发---学习笔记(3)
查看>>
正六面体用若干种颜色染色的问题解法
查看>>
Delphi高手突破(三) Delphi高级进阶
查看>>
Lucene.Net无障碍学习和使用:搜索篇
查看>>
字典序问题的解决方案
查看>>
UniDAC 断线重连方法
查看>>
PAT1104 Sum of Number Segments (20)(数学)
查看>>
[ISSUE]lua function
查看>>
什么是 Target Language Compiler
查看>>
ti processor sdk linux am335x evm /bin/setup-package-install.sh hacking
查看>>
UML的常用关系及其符号表示
查看>>
苹果开发者资源
查看>>