数论分块
模板
即求
奇妙题解
int h(cs int x)
{
int s=sqrt(x),re=0;
for(ri int i(1);i<=s;++i) re+=x/i;
return re*2-s*s;
}
(还没验证正确性
upd10.29:AC
一般化
某段数满足:
int h(cs int x)
{
if(!x) return 0;
int re=0,j;
for(ri int i(1);i<=x;i=j+1)
j=x/(x/i),re+=(j-i+1)*(x/i);
return re;
}
P2261 [CQOI2007]余数求和
然后整除分块
signed main()
{
read(n),read(k);
for(ri int l(1),r;l<=n;l=r+1)
{
if(k/l) r=min(k/(k/l),n);
else r=n;
ans-=(k/l)*(r-l+1)*(l+r)>>1;
}
wt(ans+n*k);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】