zoukankan      html  css  js  c++  java
  • 整除分块

    整除分块

    what is it?

    我们来专心看一下下面这个式子
    (sumlimits_{i=1}^n lfloor frac n i floor)
    (in general),我们会花(O(n))的时间解决
    (however),我们会发现(lfloor frac {11} 6 floor==lfloor frac {11} 7 floor==lfloor frac {11} 8 floor)
    换言之,从(lfloor frac n 1 floor)(lfloor frac n n floor),最多只会有(sqrt n)个数(证明有点复杂,可以自行BFS)
    我们可以试着去枚举这(sqrt n)个数
    然后会发现,同一个数个结尾是(lfloor frac n {lfloor frac n i floor} floor)
    那么可以用下面这个代码解决……

    int fenk(int n){
    	int tot=0;
    	for(int i=1,j;i<=n;i=j+1){
    		j=n/(n/i);
    		tot=tot+(n/i)*(j-i+1);
    	}
    	return tot;
    }
    

    because of the lack of the time
    (That) (all)

    Reality&Imagine
  • 相关阅读:
    Java方法
    Java程序控制
    Java基础语法
    编程语言的两大类型
    IntelliJ IDEA优化配置
    Hello World
    Java安装及卸载
    Java来龙去脉
    计算机底层基础
    Day14
  • 原文地址:https://www.cnblogs.com/yang-RA-NOI/p/14256463.html
Copyright © 2011-2022 走看看