SPOJ VLATTICE
来源:互联网 发布:伴奏制作软件 编辑:程序博客网 时间:2024/06/05 10:02
做此提前可以先做二维的:点击打开链接
题目链接:点击打开链接
题目大意:
•有一个n*n*n的三维格点,问在原点(0,0,0)处能看到多少个格点?(n<=1000000,50组数据)
思路:莫比乌斯反演!
什么是莫比乌斯反演?
求莫比乌斯的函数;
int prime[maxn],mu[maxn];bool unprime[maxn];long long n;void moblus(){ int i,j,k = 0; mu[1]=1; for(i = 2; i <maxn; i++) { if(!unprime[i]) { prime[k++] = i;mu[i] =-1;//此处处理phi(p) } for(j = 0; j < k && prime[j]*i <maxn; j++) { unprime[prime[j] *i] = true; if(i % prime[j] != 0) { //p不是i的约数 mu[prime[j]*i] = -mu[i];//欧拉数加一 所以莫比乌斯数乘以-1 } else { //p是i的约数 说明有两个相同的质数 mu[prime[j]*i] =0; break; } } }}
AC代码如下
#include <cstdio>#include <cstring>#include <algorithm>#include<iostream>#include<map>using namespace std;#define maxn 1000005#define mod 9901int prime[maxn],mu[maxn];bool unprime[maxn];long long n;void moblus(){ int i,j,k = 0; mu[1]=1; for(i = 2; i <maxn; i++) { if(!unprime[i]) { prime[k++] = i;mu[i] =-1;//此处处理phi(p) } for(j = 0; j < k && prime[j]*i <maxn; j++) { unprime[prime[j] *i] = true; if(i % prime[j] != 0) { //p不是i的约数 mu[prime[j]*i] = -mu[i];//欧拉数加一 所以莫比乌斯数乘以-1 } else { //p是i的约数 说明有两个相同的质数 mu[prime[j]*i] =0; break; } } }}int main(){ int t; scanf("%d",&t); moblus(); for(int cas=1;cas<=t;cas++){scanf("%lld",&n);long long sum=3;for(int i=1;i<=n;i++)sum+=mu[i]*(n/i)*(n/i)*(n/i+3);printf("%lld\n",sum);} return 0;}
阅读全文
0 0
- SPOJ-VLATTICE
- SPOJ VLATTICE
- spoj 7001 VLATTICE
- VLATTICE - Visible Lattice Points [Spoj 7001]
- SPOJ VLATTICE - Visible Lattice Points 莫比乌斯反演
- 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【莫比乌斯反演】
- 莫比乌斯反演1003 SPOJ 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(莫比乌斯反演)
- Vue不同场景下组件间的数据交流
- 数据结构小结——顺序表(指针版)
- 线段树区间修改+区间查询
- java日期,时间比较
- 数据交换
- SPOJ VLATTICE
- gcc 和 nasm的区别
- Java 内存区域和GC机制
- 浅谈c++智能指针
- 【Node.js-2】自定义模块以及引用、自定义模块存放路径、发布升级自定义的模块
- 【NOIP2017】Day2
- java中list去重复
- hdu6075Questionnaire(高校第四场)
- Json相关随笔