**~~
**~~
加速运算形似
的式子
证明:
(这东西好像俩叫法 数论/整除 分块)
模板
//for中l,r的类型若不会爆int 尽量int而不ll
ll n,ans=0;
sl(n);
for(ll l=1,r;l<=n;l=r+1){
r=n/(n/l);
ans+=(r-l+1)*(n/l)//l r范围内 k/i值相同
//if(k/l!=0) r=min(k/(k/l),n); 若为对k/i求和
//else r=n;//l r范围内 k/i值相同
}
for(ll l=1,r;l<=min(n,m);l=r+1){
r=min(n/(n/l),m/(m/l));
ans+=(r-l+1)*(n/l)*(m/l);
}
(2)
将(r-l+1)替换为对应求和式即可(其他函数的话换成相应前缀和处理即可)
(1)ans+=(l+r)*(r-l+1)/2 *(n/l);
(2)int cal(int x){return x*(x+1)*(2*x+1)/6;}
ans+=(cal(r)-cal(l-1))*(n/l);
for(ll l=1,r;l<=n;l=r+1){
r=n/(n/l);
ans+=(l+r)*(r-l+1)/2*(1+n/l)*(n/l)/2;
}
(4) ∑ i = 1 n ⌊ n i ∗ i ⌋ \sum_{i=1}^n\left \lfloor \frac{n}{i*i} \right \rfloor ∑i=1n⌊i∗in⌋
for(ll l=1,r;l<=n;l=r+1){
if(l*l>n) break;
r=sqrt(n/(n/(l*l)));
ans+=(r-l+1)*(n/(l*l));
}