传送门


思路

(以下令\(F(n)=f(n)^k\))

首先肯定要莫比乌斯反演,那么可以推出:
\[ ans=\sum_{T=1}^n \lfloor\frac n T\rfloor^2\sum_{d|T}F(d)\mu(T/d) \]
可以整除分块,但后面的东西怎么办呢?

令\(G(T)=F*\mu\),那么就有
\[ ans=\sum_{T=1}^n \lfloor\frac n T\rfloor^2G(T) \]
看到\(\mu\)函数有点烦,考虑用杜教筛的式子消去它。
\[ g(1)S(n)=\sum_{i=1}^n (F*\mu*g)(i)-\sum_{d=2}^n S(n/d) \]
显然令\(g(n)=1\),则\(\mu*g=[n=1]\),于是
\[ S(n)=\sum_{i=1}^n F(i)-\sum_{d=2}^n S(n/d) \]
\(\sum_{i=1}^n F(i)\)可以min_25筛搞出来,然后就做完了。(参见UOJ188. 【UR #13】Sanrd)

复杂度?一个\(O(\sqrt{n})\)的整除分块套上一个\(O(n^{3/4})\)的没有预处理的杜教筛,再套一个\(O(\frac{n^{3/4}}{\log n})\)的min_25筛,但它就是能过QwQ。

就当复杂度是\(O(能过)\)吧。


代码

#include<bits/stdc++.h>
clock_t t=clock();
namespace my_std{using namespace std;#define pii pair<int,int>#define fir first#define sec second#define MP make_pair#define rep(i,x,y) for (int i=(x);i<=(y);i++)#define drep(i,x,y) for (int i=(x);i>=(y);i--)#define go(x) for (int i=head[x];i;i=edge[i].nxt)#define templ template<typename T>#define sz 2010101#define mod 4294967296lltypedef long long ll;typedef double db;mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());templ inline T rnd(T l,T r) {return uniform_int_distribution<T>(l,r)(rng);}templ inline bool chkmax(T &x,T y){return x<y?x=y,1:0;}templ inline bool chkmin(T &x,T y){return x>y?x=y,1:0;}templ inline void read(T& t){t=0;char f=0,ch=getchar();double d=0.1;while(ch>'9'||ch<'0') f|=(ch=='-'),ch=getchar();while(ch<='9'&&ch>='0') t=t*10+ch-48,ch=getchar();if(ch=='.'){ch=getchar();while(ch<='9'&&ch>='0') t+=d*(ch^48),d*=0.1,ch=getchar();}t=(f?-t:t);}template<typename T,typename... Args>inline void read(T& t,Args&... args){read(t); read(args...);}char __sr[1<<21],__z[20];int __C=-1,__zz=0;inline void Ot(){fwrite(__sr,1,__C+1,stdout),__C=-1;}inline void print(register int x){if(__C>1<<20)Ot();if(x<0)__sr[++__C]='-',x=-x;while(__z[++__zz]=x%10+48,x/=10);while(__sr[++__C]=__z[__zz],--__zz);__sr[++__C]='\n';}void file(){#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);#endif}inline void chktime(){#ifndef ONLINE_JUDGEcout<<(clock()-t)/1000.0<<'\n';#endif}#ifdef modll ksm(ll x,int y){ll ret=1;for (;y;y>>=1,x=x*x%mod) if (y&1) ret=ret*x%mod;return ret;}ll inv(ll x){return ksm(x,mod-2);}#elsell ksm(ll x,int y){ll ret=1;for (;y;y>>=1,x=x*x) if (y&1) ret=ret*x;return ret;}#endif
//  inline ll mul(ll a,ll b){ll d=(ll)(a*(double)b/mod+0.5);ll ret=a*b-d*mod;if (ret<0) ret+=mod;return ret;}
}
using namespace my_std;int n,K;int pri[sz],cnt;
ll kpow[sz];
bool npri[sz];
void init()
{#define x i*pri[j]rep(i,2,sz-1){if (!npri[i]) pri[++cnt]=i,kpow[cnt]=ksm(i,K);for (int j=1;j<=cnt&&x<sz;j++){npri[x]=1;if (i%pri[j]==0) break;}}#undef x
}namespace SolveF
{int Sqr;int w[sz];int id1[sz],id2[sz],m;ll g[sz];int id(int x){return x>=Sqr?id2[n/x]:id1[x];}ll solve(int n,int j){if (n<=1) return 0;ll ret=kpow[j-1]*(g[id(n)]-(j-2))%mod;for (int k=j;1ll*pri[k]*pri[k]<=n;k++)for (int P=pri[k];1ll*P*pri[k]<=n;P*=pri[k])(ret+=solve(n/P,k+1))%=mod;return ret;}bool vis[sz];ll ans[sz];ll solve(int n){if (vis[id(n)]) return ans[id(n)];vis[id(n)]=1;return ans[id(n)]=solve(n,1)+g[id(n)];}void init(){Sqr=sqrt(n);for (int i=1,j;i<=n;i=j+1){int x=n/i;j=n/x;w[++m]=x;if (x<Sqr) id1[x]=m; else id2[j]=m;g[m]=x-1;}rep(i,1,cnt) rep(N,1,m){if (1ll*pri[i]*pri[i]>w[N]) break;int x=w[N]/pri[i];g[N]-=g[id(x)]-(i-1);}}
}namespace SolveG
{unordered_map<int,ll>M;ll solve(int n){if (n<=1) return 0;if (M[n]) return M[n];ll ret=SolveF::solve(n);for (int i=2,j;i<=n;i=j+1){j=n/(n/i);(ret-=1ll*(j-i+1)*solve(n/i)%mod-mod)%=mod;}return M[n]=ret;}
}int main()
{file();read(n,K);init();SolveF::init();ll ans=0;for (int l=1,r;l<=n;l=r+1){r=n/(n/l);ans=(ans+1ll*(n/l)*(n/l)%mod*(SolveG::solve(r)-SolveG::solve(l-1)+mod)%mod)%mod;}cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/p-b-p-b/p/10819498.html

LOJ572. 「LibreOJ Round #11」Misaka Network 与求和 [莫比乌斯反演,杜教筛,min_25筛]相关推荐

  1. 「LibreOJ Round #11」Misaka Network 与求和(杜教筛 + Min_25)

    #572. 「LibreOJ Round #11」Misaka Network 与求和 推式子 ∑i=1n∑j=1nf(gcd(i,j))k∑d=1nf(d)k∑i=1nd∑j=1nd[gcd(i,j ...

  2. Loj#572. 「LibreOJ Round #11」Misaka Network 与求和

    题目 有生之年我竟然能\(A\) 这个题求的是这个 \[\sum_{i=1}^n\sum_{j=1}^nf(gcd(i,j))^k\] \(f(i)\)定义为\(i\)的次大质因子,其中\(f(p)= ...

  3. [LOJ]#572. 「LibreOJ Round #11」Misaka Network 与求和 min_25筛+杜教筛

    Solution 推一下式子,容易得到一个线性做法:∑d=1nfk(d)((2∑i=1⌊ni⌋φ(i))−1)\sum_{d=1}^nf^k(d)((2\sum_{i=1}^{\lfloor{n\ov ...

  4. LOJ 572 「LibreOJ Round #11」Misaka Network 与求和——min_25筛

    题目:https://loj.ac/problem/572 莫比乌斯反演得 \( ans=\sum\limits_{D=1}^{n}\left\lfloor\frac{n}{D}\right\rflo ...

  5. Loj #572. 「LibreOJ Round #11」Misaka Network 与求和(莫比乌斯反演 + 杜教筛 + min_25筛(递推版))

    直接反演一下:∑i=1n∑i=1nf(gcd(i,j))k\sum_{i = 1}^n\sum_{i = 1}^nf(gcd(i,j))^ki=1∑n​i=1∑n​f(gcd(i,j))k=∑d=1n ...

  6. 「LibreOJ Round #11」Misaka Network 与测试 (网络流跑二分图匹配)

    description 研究者们想要测试 Misaka Network,于是他们把 Misaka Network 中的所有妹妹们召集到了一起. 现在妹妹们排成了 N行 M 列,有的位置没有人.现在研究 ...

  7. 「LibreOJ Round #11」Misaka Network 与测试【二分图最大匹配+读入坑点】

    题目链接 LOJ 569 这道题的坑点或许不在于想到这个算法,而是在于这里有读入的坑点,会使得你在本地编译正确而在题目判断的时候得到WA. 因为,题目的操作系统是win的,而我自己的编译器是Mac O ...

  8. 「LibreOJ Round #11」Misaka Network 与任务

    题解: 显然只需要知道某几位上是111的有多少个就可以容斥了,这个用枚举子集可以做到O(3n)" role="presentation" style="posi ...

  9. LOJ #570. 「LibreOJ Round #11」Misaka Network 与任务

    观察发现,肯定是1个或两个最优. #include<bits/stdc++.h> #define ll long long #define ull unsigned ll #define ...

最新文章

  1. Data - 深入浅出学统计 - 下篇
  2. 用C语言实现常见的三种中文内码转换
  3. 学生时代的最后一个新年,请一定要做这五件事...
  4. 立体神经网络模拟连续不完备系统
  5. centos java服务器搭建_从零开始搭建CentOS 7服务器配置JavaWeb环境
  6. 程序员修炼之道---读书随笔1
  7. 微软允许员工永久在家办公,远程办公时代真的要来临了吗?
  8. 欧式理论计算机科学,理论计算机科学中几个问题.ppt
  9. react 使用webpack打包问题汇总
  10. H5学习从0到1-H5的新特性(1)
  11. H.264标准(三)F4V封装格式详解
  12. python二级基础题,计算机二级python部分基础操作题
  13. pe修改rpc服务器不可用,电脑rpc服务器不可用,教你电脑rpc服务器不可用怎么解决...
  14. 索尼播放器Android系统,获得最新固件的索尼NW-ZX505,简直脱胎换骨!
  15. qq病毒java代码_刚刚遭遇QQ病毒
  16. ToF 3D视觉传感技术详解、应用场景和市场前景
  17. 如何理解总体标准差、样本标准差与标准误
  18. 金融统计分析python论文_比较好写的本科金融专业论文题目 本科金融专业论文题目怎么取...
  19. 钉钉、微信抢占移动OA入口,其他OA厂商何去何从?
  20. android 铃声 文件夹,安卓手机怎么设置铃声 安卓铃声文件夹在哪里设置

热门文章

  1. Vue Cli 3.0打包生成app
  2. 实时疫情数据可视化分析
  3. 【Linux】使用linux命令查找应用安装路径
  4. Team Communication
  5. 机器学习 - K-means聚类分析
  6. python中*args的使用
  7. delete 删除指针
  8. Studio One6有哪些新功能及系统配置要求介绍
  9. 用AutoIT 上传图片
  10. 你不知道的javascript[上]学习总结(第一部分1-3章)