zoukankan      html  css  js  c++  java
  • [BZOJ2226][SPOJ5971]LCMSum(莫比乌斯反演)

    2226: [Spoj 5971] LCMSum

    Time Limit: 20 Sec  Memory Limit: 259 MB
    Submit: 1949  Solved: 852
    [Submit][Status][Discuss]

    Description

    Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes the Least Common Multiple of the integers i and n.

    Input

    The first line contains T the number of test cases. Each of the next T lines contain an integer n.

    Output

    Output T lines, one for each test case, containing the required sum.

    Sample Input

    3
    1
    2
    5

    Sample Output

    1
    4
    55

    HINT

    Constraints

    1 <= T <= 300000
    1 <= n <= 1000000

    Source

    [Submit][Status][Discuss]

    一个比较有用的式子:$$f(n)=sum_{i=1}^{n}[gcd(i,n)=1]i$$$$f(1)=1quad f(n)=lfloor frac{varphi(n)*n}{2} floor$$

    然后按照套路化式子即可:https://blog.sengxian.com/solutions/bzoj-2226

    线性筛WA两次,怎么回事啊?

     1 #include<cstdio>
     2 #include<algorithm>
     3 #define rep(i,l,r) for (int i=l; i<=r; i++)
     4 typedef long long ll;
     5 using namespace std;
     6 
     7 const int N=1000003;
     8 int n,T,tot,p[N],phi[N];
     9 bool b[N];
    10 ll g[N];
    11 
    12 void pre(){
    13     phi[1]=1;
    14     for (int i=2; i<N; i++){
    15         if (!b[i]) p[++tot]=i,phi[i]=i-1;
    16         for (int j=1; j<=tot && i*p[j]<N; j++){
    17             int t=i*p[j]; b[t]=1;
    18             if (i%p[j]) phi[t]=(p[j]-1)*phi[i];
    19                 else { phi[t]=p[j]*phi[i]; break; }
    20         }
    21     }
    22     for (int i=1; i<N; i++) for (int j=i; j<N; j+=i) g[j]+=1ll*phi[i]*i;
    23 }
    24 
    25 int main(){
    26     freopen("bzoj2226.in","r",stdin);
    27     freopen("bzoj2226.out","w",stdout);
    28     pre();
    29     for (scanf("%d",&T); T--; ) scanf("%d",&n),printf("%lld
    ",(n==1)?1:((n==2)?4:(g[n]+1)*n/2));
    30     return 0;
    31 }
  • 相关阅读:
    每日总结
    每日总结
    学习日报
    体温填报app开发
    学习日报
    学习日报
    学习日报
    学习日报
    学习日报
    学习日报
  • 原文地址:https://www.cnblogs.com/HocRiser/p/8695359.html
Copyright © 2011-2022 走看看