spoj 7001
/***
大意:计算gcd(x,y,z) =1 0<= x, y , z <= n 问有多少个这样的对
莫比乌斯反演:(反演: 用结果推原因)
函数m(m)的定义如下:

莫比乌斯反演:
* f(x) = sigma{g(d)}其中x % d == 0,则g(x) = sigma{miu(d) * f(x/d)}
* f(x) = sigma{g(d)}其中d % x == 0,则g(x) = sigma{miu(d/x) * f(d)}
莫比乌斯反演中miu(x) =
* 1 {x中含有偶数个不同的质因子}
* -1 {x中含有奇数个不同的质因子}
* 0 {其他情况}
本题: 设f(x) = 约数为x 的所有数集合 g(x) = 最大公约数gcd 为x的集合
那么g(x) = siga(mu(d)*f(x/d)) x%d==0
或者 g(x) = siga(mu(d/x) *f(d)) d%x==0
在本题中只包含了x,y,z>1 情况 ,,还应加上退化到3个平面上的情况。。
1、 f(x) = n/x*n/x*n/x;----〉 g(x) = mu[i] *(n/x*n/x*n/x)
2、 加上退化到三个平面 ----〉 g(x) = mu[i]*(n/x+1)*(n/x+1)*(n/x+1)
或者分开求:
1、 三个坐标轴。。3
2、 空间中 n/x* n/x*n/x;
3、 三个坐标平面: n/x*n/x +n/x*n/x +n/x*n/x
**/
1、 第一种方法
#include <iostream>
#include <cstring>
using namespace std;
const int maxn = ;
int pri[maxn];
int prime[maxn];
int mu[maxn];
void pri_mu(){
memset(prime,,sizeof(prime));
int cnt =;
mu[] =;
for(int i=;i<maxn;i++){
if(!prime[i]){
mu[i] =-;
pri[cnt++] = i;
}
for(int j=;j<cnt;j++){
if(i*pri[j]>maxn)
break;
prime[i*pri[j]] = ;
if(i%pri[j]==){
mu[i*pri[j]] =;
break;
}else
mu[i*pri[j]] = -mu[i];
}
}
}
int main()
{
pri_mu();
int t;
cin>>t;
long long n;
while(t--){
cin>>n;
long long ans =;
for(int i=;i<=n;i++)
ans += (long long )mu[i]*((n/i+)*(n/i+)*(n/i+)-);
cout<<ans<<endl;
}
return ;
}
----------------------------------------------------------------------------------------------------------
2、 第二种方法
#include <iostream>
#include <cstring>
using namespace std;
const int maxn = ;
int pri[maxn];
int prime[maxn];
int mu[maxn];
void pri_mu(){
memset(prime,,sizeof(prime));
int cnt =;
mu[] =;
for(int i=;i<maxn;i++){
if(!prime[i]){
mu[i] =-;
pri[cnt++] = i;
}
for(int j=;j<cnt;j++){
if(i*pri[j]>maxn)
break;
prime[i*pri[j]] = ;
if(i%pri[j]==){
mu[i*pri[j]] =;
break;
}else
mu[i*pri[j]] = -mu[i];
}
}
}
int main()
{
pri_mu();
int t;
cin>>t;
long long n;
while(t--){
cin>>n;
long long ans =;
for(int i=;i<=n;i++)
ans += (long long )mu[i]*((n/i)*(n/i)*(n/i+));
cout<<ans<<endl;
}
return ;
}
spoj 7001的更多相关文章
- SPOJ 7001 VLATTICE【莫比乌斯反演】
题目链接: http://www.spoj.com/problems/VLATTICE/ 题意: 1≤x,y,z≤n,问有多少对(x,y,z)使得gcd(x,y,z)=1 分析: 欧拉搞不了了,我们用 ...
- spoj 7001. Visible Lattice Points GCD问题 莫比乌斯反演
SPOJ Problem Set (classical) 7001. Visible Lattice Points Problem code: VLATTICE Consider a N*N*N la ...
- SPOJ 7001 VLATTICE - Visible Lattice Points(莫比乌斯反演)
题目链接:http://www.spoj.com/problems/VLATTICE/ 题意:求gcd(a, b, c) = 1 a,b,c <=N 的对数. 思路:我们令函数g(x)为g ...
- SPOJ 7001. Visible Lattice Points (莫比乌斯反演)
7001. Visible Lattice Points Problem code: VLATTICE Consider a N*N*N lattice. One corner is at (0,0, ...
- Spoj 7001 Visible Lattice Points 莫比乌斯,分块
题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37193 Visible Lattice Points Time L ...
- SPOJ 7001(莫比乌斯反演)
传送门:Visible Lattice Points 题意:0<=x,y,z<=n,求有多少对xyz满足gcd(x,y,z)=1. 设f(d) = GCD(a,b,c) = d的种类数 : ...
- SPOJ 7001 Visible Lattice Points (莫比乌斯反演)
题意:求一个正方体里面,有多少个顶点可以在(0,0,0)位置直接看到,而不被其它点阻挡.也就是说有多少个(x,y,z)组合,满足gcd(x,y,z)==1或有一个0,另外的两个未知数gcd为1 定义f ...
- spoj 7001 Visible Lattice Points莫比乌斯反演
Visible Lattice Points Time Limit:7000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Su ...
- BZOJ 2588: Spoj 10628. Count on a tree [树上主席树]
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MBSubmit: 5217 Solved: 1233 ...
随机推荐
- Android实现获取应用程序相关信息列表的方法
本文所述为Androdi获取手机应用列表的方法,比如获取到Android应用的软件属性.大小和应用程序路径.应用名称等,获取所有已安装的Android应用列表,包括那些卸载了的,但没有清除数据的应用程 ...
- ios网络学习------8 xml格式数据的请求处理 用代码块封装
#pragma mark 载入xml - (void)loadXML { //获取网络数据. NSLog(@"load xml"); //从webserver载入数据 NSStri ...
- BZOJ 1012 最大数maxnumber
Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. 2. ...
- CodeForces 577A Multiplication Table 质因子数
题目:click here 题意:看hint就懂了 分析:数论小题,在n0.5时间里求n的质因子数 #include <bits/stdc++.h> using namespace std ...
- BZOJ 1221: [HNOI2001] 软件开发(最小费用最大流)
不知道为什么这么慢.... 费用流,拆点.... --------------------------------------------------------------------------- ...
- CSS3 模拟笑脸
参考 http://www.html5tricks.com/demo/html5-css3-smile-face/index.html 它还做了舌头... 一开始我都是用JS实现的动画 当然了 眼 ...
- 电脑cmos是什么?和bois的区别?
很多人都分不清电脑cmos和bois区别,有人一会儿说什么bois设置,有人一会儿说cmos设置.而看起来这两个又似乎差不多,本文将用最简单的白话文告诉各位,什么是cmos,以及cmos和bois的的 ...
- 手机SIM卡介绍 三类不同标准的SIM卡
SIM卡的全称是Subscriber Identity Module,翻译过来也叫客户识别模块,也叫做智能卡.用户身份识别卡.这块小小的芯片可以存储用户的号码.信息,以及一定数量的联系人数据,配合我们 ...
- BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板
题目 1724: [Usaco2006 Nov]Fence Repair 切割木板 Time Limit: 5 Sec Memory Limit: 64 MB Description Farmer ...
- hdoj 1269 迷宫城堡(强连通分量)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 思路分析:该问题要求判断是否每两个房间都可以相互到达,即求该有向图中的所有点是否只构成一个强连通 ...