jzoj4392
题意
其\(x\in[1,A],y\in [1,B]\),\(\{x^y\}\)的大小
\(A,B\in 10^9\)
做法
将\(x\)表示成\(x=\prod\limits_{i=1}^c p_i^{k_i}\),令\(d=gcd(k_1,k_2,...,k_c)\)
为唯一表示,在\(d=1\)处统计
- 若\(x>\sqrt{A}\),则\(y\)可以任取,贡献为\(B\)
- 若\(x\le sqrt{A}\),令\(L=log_xA\),\(k=(1,L]\),在\(x'=x^k\)处可能重复统计:\(x^y=(x'=x^k)^{y'}\)。那我们实际求的是\(a\in [1,L],b\in[1,B]\),\(\{ab\}\)的大小
将\([1,LB]\)划分成\(L\)段,每段形似\([iB+1,(i+1)B]\),\(a\)在其中有贡献当且仅当\(a\in[i,L]\)
问题变成了\([iB+1,(i+1)B]\)中有多少数能表示成\(a\)的倍数(\(a\in[i,L]\))
可以考虑容斥,但\(L\in [2,30]\),暴力肯定不行;若\(a_1,a_2\in[i,L]\),满足\(a_1|a_2\),则\(a_2\)可以丢掉。这样容斥元素的个数就\(\le 15\)了
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步