zoukankan      html  css  js  c++  java
  • 算法笔记——数论分块

    11 个式子

    对于这样一个式子:

    i=1nnisum_{i=1}^{n}lfloor frac{n}{i} floor

    我们可以分段求和,我们发现 nilfloor frac{n}{i} floor 一共就只有 nsqrt{n} 种取值,所以,我们可以根据每种取值已经这种取值的次数,算出对答案的贡献,从而得到答案。

    for(int l=1,r;l<=n;l=r+1){
    	r=n/(n/l);//计算这种取值的右边界
    	ans+=(r-l+1)*(n/l);
    }
    

    22 个式子

    对于这样一个式子:

    i=1min(a,b)nimisum_{i=1}^{min(a,b)}lfloor frac{n}{i} floor lfloor frac{m}{i} floor

    跟上面同理,这个式子我们会去数论分块,大家可以结合代码理解,我就不详细讲了。

    for(int 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);
    }
    
  • 相关阅读:
    关于SQL优化(转载,格式有调整)
    开篇(我想有个家,安稳的家)
    常见兼容问题
    BFC概念及应用
    浏览器私有前缀及内核
    css3新增属性
    宽高自适应
    css布局
    css3选择器
    常用标签
  • 原文地址:https://www.cnblogs.com/zhaohaikun/p/12968785.html
Copyright © 2011-2022 走看看