P3455 [POI2007]ZAP-Queries 题解
题目大意
给出 ,求满足 的有序正整数对 的数量。
多组数据,数据组数 ,
题目解析
显然需要求的式子就是
我们令 ,那么式子就等价为
显然我们可以使用 展开 ,那么式子就变成
然后是套路,改变枚举顺序,先枚举 ,就可以得到
这其实就是
这样只需要预处理出莫比乌斯函数,使用整除分块就可以解决了。(记得开 long long
)
核心代码:
#define N 50000 #define maxn 50039 int pr[maxn],isp[maxn],cnt; ll mu[maxn]; void init(){ int i,j; mu[1]=1; cnt=0; isp[1]=1; for(i=2;i<=N;i++){ if(!isp[i]) pr[++cnt]=i,mu[i]=-1; for(j=1;j<=cnt&&i*pr[j]<=N;j++){ isp[i*pr[j]]=1; mu[i*pr[j]]=-mu[i]; if(i%pr[j]==0){ mu[i*pr[j]]=0; break; } } } for(i=2;i<=N;i++) mu[i]+=mu[i-1]; return; } ll js(int n,int m){ ll i=1,r,nn=mmin(n,m),ans=0; while(i<=nn){ r=mmin(n/(n/i),m/(m/i)); ans+=(mu[r]-mu[i-1])*(n/i)*(m/i); i=r+1; } return ans; } int main(){ init(); int T; ll a,b,d; T=read(); while(T--){ a=read(); b=read(); d=read(); print(js(a/d,b/d)),pc('\n'); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具