51Nod 1594

4人阅读 评论(0) 收藏 举报
分类:

Description

F(n)=i=1nj=1nϕ(ϕ(i),ϕ(j))
其中ϕ表示欧拉函数。欧拉函数ϕ(n) 是不超过n的数中与n互质的数的数目。
ϕ(ϕi,ϕj)表示i,j欧拉函数值的最大公约数的欧拉函数值.

给出n,求F(n)的值。

Input

一行,包含正整数T,表示数据组数。T<=5
接下来T行每行一个正整数n。n<=2*10^6

Output

共T行,每行包含一个答案。

Input示例

1
1

Output示例

1

Solution

莫比乌斯反演。。。蒟蒻不会写系列
依题意,有
Ans=i=1nj=1nϕ(ϕi),ϕ(j))
枚举其gcd,
Ans=d=1nϕ(d)i=1nj=1n[gcd(ϕ(i),ϕ(j)=d]
g(d)=i=1nj=1n[d|gcd(ϕ(i),ϕ(j))]
f(d)=i=1nj=1n[gcd(ϕ(i),ϕ(j))=d]
则有
g(d)=d|kf(k)
f(n)=n|dμ(dn)g(d)
Ans=d=1nϕ(d)f(d)
f(d)可以在O(nln(n))的时间内求出

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;

#define N 2000020
#define M 2000000
#define LL long long

LL t[N],prime[N],phi[N],mu[N];
LL f[N],g[N];
int ti,n;

void pre()
{
    phi[1]=mu[1]=1;
    memset(t,0,sizeof(t));
    memset(prime,0,sizeof(prime));
    for (int i=2;i<=M;i++)
    {
        if (t[i]==0) 
        {
            prime[++prime[0]]=i;
            mu[i]=-1; phi[i]=i-1;
        }
        for (int j=1;j<=prime[0];j++)
        {
            int k=i*prime[j];
            if (k>M) break;
            t[k]=1;
            if (i%prime[j]==0)
            {
                mu[k]=0;
                phi[k]=phi[i]*prime[j];
                break;
            }
            mu[k]=-mu[i];
            phi[k]=phi[i]*phi[prime[j]];
        }
    }
}

LL solve(int n)
{
    memset(t,0,sizeof(t));
    memset(g,0,sizeof(g));
    memset(f,0,sizeof(f));
    for (int i=1;i<=n;i++)
      t[phi[i]]++;
    for (int d=1;d<=n;d++)
      for (int i=1;i<=n/d;i++)
        g[d]+=t[i*d];
    for (int i=1;i<=n;i++)
      g[i]=g[i]*g[i];
    for (int d=1;d<=n;d++)
      for (int i=1;i<=n/d;i++)
        f[d]+=mu[i]*g[i*d];
    //for (int i=1;i<=n;i++)
    //  printf("%d %d %d %d %d\n",i,phi[i],mu[i],g[i],f[i]);
    LL ans=0;
    for (int i=1;i<=n;i++)
      ans+=phi[i]*f[i];
    return ans;
}

int main()
{
    pre();
    scanf("%d",&ti);
    for (int ii=1;ii<=ti;ii++)
    {
        scanf("%d",&n);
        printf("%lld\n",solve(n));
    }
    return 0;
}

查看评论

[51nod1594]Gcd and Phi

题目大意给定一个数n,求∑ni=1∑nj=1ϕ(ϕi,ϕj)\sum_{i=1}^n \sum_{j=1}^n \phi(\phi i,\phi j)n≤2∗1062*10^6 数据组数不超过5分析...
  • WorldWide_D
  • WorldWide_D
  • 2016-12-01 22:17:56
  • 559

51Nod-1594-Gcd and Phi

ACM模版描述题解这个题更准确的描述应该是求 F(n)=∑i=1n∑j=1nϕgcd(ϕi,ϕj)F(n) = \sum_{i = 1}^n \sum_{j = 1}^n \phi_{gcd(\phi...
  • f_zyj
  • f_zyj
  • 2017-09-05 13:29:42
  • 160

【51NOD 1594】Gcd and Phi

Description F(n)=∑i=1n∑j=1nφ(φ(i),φ(j))F(n)=\sum_{i=1}^n\sum_{j=1}^n\varphi(\varphi(i),\varphi(j)) ...
  • HOWARLI
  • HOWARLI
  • 2016-12-14 19:06:08
  • 865

[51nod 1594]Gcd and Phi

题目大意求所有(i,j)满足1
  • WerKeyTom_FTD
  • WerKeyTom_FTD
  • 2016-12-12 22:13:32
  • 325

51nod 1594 Gcd and Phi

体会那起起落落的心 和不得已的坚强
  • qq_20669971
  • qq_20669971
  • 2016-12-09 10:20:15
  • 260

[51Nod 1594] Gcd and Phi

Description 求∑i=1n∑j=1nφ(gcd(φ(i),φ(j)))\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}φ(gcd(φ(i),φ(j))...
  • hzj1054689699
  • hzj1054689699
  • 2016-12-24 08:15:16
  • 266

UVa1594

UVa-1594 分析:这个题其实是有漏洞的,数据太水,开始我遍历500次便结束输出LOOP,AC了,然而去翻了翻大神的博客,竟然 只需200次便可,这个题简直水的可以。这个题基本...
  • qq_32036091
  • qq_32036091
  • 2015-12-06 22:10:23
  • 1201

UVa 1594 - Ducci Sequence【模拟】

原文网址: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&probl...
  • liuke19950717
  • liuke19950717
  • 2015-12-10 20:13:34
  • 521

51nodProblem_1836.in

  • 2016年12月09日 19:50
  • 24KB
  • 下载

UVa 1594 Ducci Sequence(模拟+查重)

原题地址https://vjudge.net/problem/UVA-1594 题意:对一个n元组(a1, a2, … an),可以对于每个数求出它和下一个数的差的绝对值,得到一个新的n元组(|a...
  • lecholin
  • lecholin
  • 2017-04-22 22:05:51
  • 267
    个人资料
    持之以恒
    等级:
    访问量: 6090
    积分: 713
    排名: 6万+