[bzoj4804]欧拉心算

租酥雨 租酥雨     2022-10-09     743

关键词:

题面戳我
题意:求
[sum_{i=1}^{n}sum_{j=1}^{n}phi(gcd(i,j))]
多组数据,(nle10^7)

sol

SBT
单组数据(O(sqrt n))都是套路了,完整公式就不写了。
最后要线性筛出来的积性函数长成这样
[h(T)=sum_{d|T}mu(frac Td)phi(d)]
这个要怎么筛?我这种小菜鸡就只会大力分类讨论
我都快数不清我分了几种了
1、(h(1)=1)
2、(h(p)=mu(p)phi(1)+mu(1)phi(p)=p-2)
3、(h(p^2)=mu(p^2)phi(1)+mu(p)phi(p)+mu(1)phi(p^2)=p^2-2p+1)
4、(h(p^k)=h(p^{k-1})*pquad(k>2))
剩下的就线性筛了。

code

#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long
const int N = 1e7;
int gi()
{
    int x=0,w=1;char ch=getchar();
    while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
    if (ch=='-') w=0,ch=getchar();
    while (ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
    return w?x:-x;
}
int pri[N+5],tot,zhi[N+5],low[N+5];
ll h[N+5];
void Mobius()
{
    zhi[1]=h[1]=1;
    for (int i=2;i<=N;i++)
    {
        if (!zhi[i]) low[i]=pri[++tot]=i,h[i]=i-2;
        for (int j=1;j<=tot&&i*pri[j]<=N;j++)
        {
            zhi[i*pri[j]]=1;
            if (i%pri[j]==0)
            {
                low[i*pri[j]]=low[i]*pri[j];
                if (low[i]==i)
                    if (i==pri[j]) h[i*pri[j]]=h[i]*pri[j]+1;
                    else h[i*pri[j]]=h[i]*pri[j];
                else
                    h[i*pri[j]]=h[i/low[i]]*h[low[i]*pri[j]];
                break;
            }
            low[i*pri[j]]=pri[j];
            h[i*pri[j]]=h[i]*h[pri[j]];
        }
    }
    for (int i=2;i<=N;i++)
        h[i]+=h[i-1];
}
int main()
{
    Mobius();
    int T=gi();
    while (T--)
    {
        int n=gi(),i=1;
        ll ans=0;
        while (i<=n)
        {
            int j=n/(n/i);
            ans+=(h[j]-h[i-1])*(n/i)*(n/i);
            i=j+1;
        }
        printf("%lld
",ans);
    }
}

bzoj4804欧拉心算欧拉函数

...0^7输出按读入顺序输出答案。样例输入110样例输出136题解欧拉函数其中用到了这个推导很简单:由欧拉函数的定义,$sumlimits_{i=1}^ksumlimits_{j=1}^i[gcd(i,j)=1]=sumlimits_{i=1}^kv 查看详情

bzoj4804:欧拉心算欧拉筛(代码片段)

题意:求(sum_i=1^nsum_j=1^nphi(gcd(i,j)))题解:(sum_i==1^nsum_j=1^nsum_d=1^n[gcd(i,j)==d]*phi(d))(=sum_d=1^nphi(d)*sum_i=1^nsum_j=1^n[gcd(i,j)==d])(=sum_d=1^nphi(d)*sum 查看详情

[bzoj4804]欧拉心算

题面戳我题意:求[sum_{i=1}^{n}sum_{j=1}^{n}phi(gcd(i,j))]多组数据,(nle10^7)。solSBT单组数据(O(sqrtn))都是套路了,完整公式就不写了。最后要线性筛出来的积性函数长成这样[h(T)=sum_{d|T}mu(fracTd)phi(d)]这个要怎么筛?我这种小菜鸡就只会大... 查看详情

bzoj4805:欧拉函数求和

Description求(sum_{i=1}^nvarphi(i),nleqslant2 imes10^9)Solution杜教筛...见上篇...Code/**************************************************************Problem:4805User:BeiYuLanguage:C++Result:AcceptedTime 查看详情

bzoj4869相逢是问候(线段树,欧拉定理)

【BZOJ4869】相逢是问候(线段树,欧拉定理)题面BZOJ题解根据欧拉定理递归计算(类似上帝与集合的正确用法)所以我们可以用线段树维护区间最少的被更新的多少次如果超过了(varphi)的限制就不用再计算了如果需要计算就每次暴... 查看详情

[bzoj2818]欧拉函数

...lt;=x,y<=(n/p)范围内gcd(x,y)=1的对数,而这个对数就是类似欧拉函数的一个前缀和。#include<cstdio>#include<cstring>usingnamespacestd;co 查看详情

bzoj4805欧拉函数求和(杜教筛)

【BZOJ4805】欧拉函数求和(杜教筛)题面BZOJ题解好久没写过了正好看见了顺手切一下令[S(n)=sum_{i=1}^nvarphi(i)]设存在的某个积性函数(g(x))[(g*varphi)(i)=sum_{d|i}g(d)varphi(frac{i}{d})][sum_{i=1}^n(g*varphi(i))(i)][=sum_{i=1}^nsum 查看详情

bzoj4173--欧拉函数

 题解:http://blog.csdn.net/PoPoQQQ/article/details/46820313 代码:1#include<iostream>2#include<cstdio>3#include<cstring>4#include<algorithm>5#include<cmath>6usingnam 查看详情

bzoj4805:欧拉函数求和

好久没写杜教筛了练练手AC量刷起#include<bits/stdc++.h>#defineRGregister#defineILinline#defineFill(a,b)memset(a,b,sizeof(a))usingnamespacestd;typedeflonglongll;constint_(1e7+1);ILintInput(){RGintx=0,z=1;RGcharc 查看详情

bzoj4802欧拉函数

4802:欧拉函数Description已知N,求phi(N)Input正整数N。N<=10^18Output输出phi(N)SampleInput8SampleOutput4  很明显,这样的题就是一道十分简单的入门题。只是N比较大,但输入和输出都还没有爆longlong。如果输入高精度数,那就很恶心了(... 查看详情

bzoj4805欧拉函数求和

题解:杜教筛问题:式子推的不熟#include<iostream>#include<cstdio>#include<cstring>#include<map>usingnamespacestd;typedeflonglongLint;intn;map<int,Lint>f;intcntprime;intprime[1000009];int 查看详情

[bzoj]4805:欧拉函数求和

解题思路类似莫比乌斯函数之和题目大意:求[1,n]内的欧拉函数$varphi$之和。($n<=2*10^{9}$)思路:令$M(n)=sum_{i=1}^{n}varphi(i) $,题目所求即为$M(n)$。由于$sum_{d|n}varphi(d)=n$,所以$sum_{i=1}^{n}sum_{d|i}varphi(d)=frac{n(n+1)}{2}$令$ 查看详情

bzoj35603560:dzylovesmathv(欧拉函数)

3560:DZYLovesMathVTimeLimit: 10Sec  MemoryLimit: 256MBSubmit: 241  Solved: 133Description给定n个正整数a1,a2,…,an,求的值(答案模10^9+7)。Input第一行一个正整数n。接下来n行,每行一个正整数,分别为a1,a2, 查看详情

bzoj4805:欧拉函数求和(杜教筛)(代码片段)

4805:欧拉函数求和TimeLimit: 15Sec  MemoryLimit: 256MBSubmit: 614  Solved: 342[Submit][Status][Discuss]Description给出一个数字N,求sigma(phi(i)),1<=i<=N Input正整数N。N 查看详情

bzoj2226[spoj5971]lcmsum莫比乌斯反演(欧拉函数?)

【BZOJ2226】[Spoj5971]LCMSumDescriptionGivenn,calculatethesumLCM(1,n)+LCM(2,n)+..+LCM(n,n),whereLCM(i,n)denotestheLeastCommonMultipleoftheintegersiandn.InputThefirstlinecontainsTthenumberoftestcases.Eac 查看详情

bzoj4173数学欧拉函数神题

【BZOJ4173】数学Description Input 输入文件的第一行输入两个正整数。 Output 如题SampleInput56SampleOutput240HINT N,M<=10^15题解:STEP1:这步还是很容易的吧~毕竟原来的式子不太舒服。但是注意,最后一个式子的取值只能... 查看详情

bzoj3560dzylovesmathv欧拉函数

...llip;,an。输出仅一行答案。样例输入361015样例输出1595题解欧拉函数由于$varphi$是积性函数,所以可以单独考虑每个质因子的贡献。那么对于最终的$a=i_1i_2dotsi_n$,若其包含$p^c,c>0 查看详情

bzoj3813奇数国线段树+欧拉函数

【BZOJ3813】奇数国Description给定一个序列,每次改变一个位置的数,或是询问一段区间的数的乘积的phi值。每个数都可以表示成前60个质数的若干次方的乘积。SampleInput6013115013117013023SampleOutput1824366HINTx≤100000,当ai=0时0≤ci−bi... 查看详情