关于莫比乌斯反演的几个题目(更新中)

网络赛中有一道数论题出现了莫比乌斯反演这个概念,今天就学了一下

当g(x) = sigma{f(d),d|x}

则f(x) = sigma{mu(d)*g(x/d),d|x} 

其中mu(d)为莫比乌斯函数,详细了解请看具体数学吧

1.SPOJ VLATTICE

果断不会的,就翻了题解,这道题题解刚开始都看不懂。

后来才知道,莫比乌斯函数有另一种形式

当g(x) = sigma{f(d),x|d}

则f(x) = sigma{mu(d/x)*g(d),x|d}

这道题可以构造f(x) 为gcd(i,j,k) = x的个数,g(x) 为满足 x|gcd(i,j,k) 的个数

由于gcd(x) = [n/x]^3,所以计算f(1)即可。

另外,读题,这道题可以令一个变量为0,也就是三维变二维,还有(0,0,1),(0,1,0),(1,0,0)三个情况算上

#include 
#include 
#include 
#include 
#include 
#include 

#define ll long long
#define N 1000005
#define ss(a) scanf("%d",&a)
#define cl(a) memset(a,-1,sizeof(a))
#define pb push_back

using namespace std;

int mu[N],f[N],a[N];
vectorrec;

void prime()
{
    int i,j;
    cl(mu);
    mu[1]=1;
    rec.pb(1);
    for (i=2;i



你可能感兴趣的:(数学)