https://www.luogu.org/problemnew/show/P2424

记 \(\sigma(n)\) 为n的所有约数之和,例如 \(\sigma(6)=1+2+3+6=12\) .

求 \(ans(n)=\sum\limits_{i=x}^{y}\sigma(i)\) .

首先,记 \(f(n)=\sum\limits_{i=1}^{n}\sigma(i)\) ,则 \(ans(n)=f(y)-f(x-1)\) .

对于 \(f(n)=\sum\limits_{i=1}^{n}\sigma(i)\) ,一个直接的做法是枚举i然后枚举i的因子求和,显然会TLE.

考虑直接枚举因子,易知 \(n\) 以内 \(d\) 的一共有 \(\lfloor\frac{n}{d}\rfloor\) 个,

则有 $f(n)=\sum\limits_{d=1}^{n} d * \lfloor\frac{n}{d}\rfloor $ ,类似的形式在余数求和中见过,直接复制:

记 $ c= \lfloor\frac{n}{d}\rfloor $ 则每段 \(d\) 对应相同的一个 \(c\)

import java.io.*;
import java.util.*;
import java.math.*; public class Main {
public static void solve(Scanner cin,PrintStream cout){
while(cin.hasNext()){
long x=cin.nextLong(),y=cin.nextLong();
cout.println(sumfenkuai(y)-sumfenkuai(x-1));
}
} public static long sumfenkuai(long n){
long ans=0;
for(long l=1,r; l<=n; l=r+1) {
if(n/l!=0) {
r=Math.min(n/(n/l),n);
} else {
//n/l==0,意味着l>n,所有的后面的下整都是0,分成同一块
r=n;
break;
} //d={l,l+1,...r}
//sum(d)=(l+r)*(r-l+1)/2
//c=n/l=n/r //ans=sum_d=1^n:(sum(d)*c)
ans+=(n/l)*(r-l+1)*(l+r)/2;
}
return ans;
} public static void main(String[] args) {
//setFileIO("D://test");
Scanner cin=new Scanner(System.in);
PrintStream cout=new PrintStream(System.out); solve(cin,cout); cin.close();
cout.close();
} public static void FileIO(String filename){
FileInputStream fis = null;
try {
fis = new FileInputStream(filename+".in");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} System.setIn(fis); PrintStream ps = null;
try {
ps = new PrintStream(new FileOutputStream(filename+".out"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.setOut(ps);
}
}

洛谷 - P2424 - 约数和 - 整除分块的更多相关文章

  1. 洛谷P3935 Calculating(整除分块)

    题目链接:洛谷 题目大意:定义 $f(x)=\prod^n_{i=1}(k_i+1)$,其中 $x$ 分解质因数结果为 $x=\prod^n_{i=1}{p_i}^{k_i}$.求 $\sum^r_{ ...

  2. 洛谷 P2424 约数和

    题目背景 Smart最近沉迷于对约数的研究中. 题目描述 对于一个数X,函数f(X)表示X所有约数的和.例如:f(6)=1+2+3+6=12.对于一个X,Smart可以很快的算出f(X).现在的问题是 ...

  3. 洛谷 - P4450 - 双亲数 - 整除分块

    https://www.luogu.org/fe/problem/P4450 应该不分块也可以. 求\(F(n,m,d)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^ ...

  4. 洛谷—— P2424 约数和

    https://www.luogu.org/problem/show?pid=2424 题目背景 Smart最近沉迷于对约数的研究中. 题目描述 对于一个数X,函数f(X)表示X所有约数的和.例如:f ...

  5. 洛谷P2424 约数和 题解

    题目 约数和 题解 此题可以说完全就是一道数学题,不难看出这道题所求的是 \(\sum\limits_{i=x}^{y}{\sum\limits_{d|i}{d}}\) 的值. 很显然,用暴力枚举肯定 ...

  6. 莫队 [洛谷2709] 小B的询问[洛谷1903]【模板】分块/带修改莫队(数颜色)

    莫队--------一个优雅的暴力 莫队是一个可以在O(n√n)内求出绝大部分无修改的离线的区间问题的答案(只要问题满足转移是O(1)的)即你已知区间[l,r]的解,能在O(1)的时间内求出[l-1, ...

  7. 洛谷P3396 哈希冲突 (分块)

    洛谷P3396 哈希冲突 题目背景 此题约为NOIP提高组Day2T2难度. 题目描述 众所周知,模数的hash会产生冲突.例如,如果模的数p=7,那么4和11便冲突了. B君对hash冲突很感兴趣. ...

  8. 洛谷 [SDOI2015]约数个数和 解题报告

    [SDOI2015]约数个数和 题目描述 设\(d(x)\)为\(x\)的约数个数,给定\(N,M\),求$ \sum\limits^N_{i=1}\sum\limits^M_{j=1}d(ij)$ ...

  9. 洛谷 - P1403 - 约数研究 - 数论

    https://www.luogu.org/problemnew/show/P1403 可以直接用线性筛约数个数求出来,但实际上n以内i的倍数的个数为n/i的下整,要求的其实是 $$\sum\limi ...

随机推荐

  1. ffmpeg api升级到3.3 api变化

     void av_free_packet(AVPacket * pkt) Use void av_packet_unref(AVPacket * pkt) Wipe the packet. Unref ...

  2. disabled和readonly

    项目中,有一个input控件,input的值需要通过点击一个javascript链接,从弹出的对话框中所列出的项中选择.而不能从input框中直接输入. 刚开始将input的disabled属性设置为 ...

  3. 如何设置Tomcat的JVM虚拟机内存大小

    我的是解压版的tomcat: 首先找到tomcat中bin目录下: catalina.bat 文件,打开这个文件,在 @echo off 下面一行,加上一行代码: set JAVA_OPTS=-ser ...

  4. 【LeetCode】Sqrt(x) (转载)

    Implement int sqrt(int x). Compute and return the square root of x. 原文地址: http://kb.cnblogs.com/page ...

  5. ZOJ - 3935 2016 【数的筛选】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3935 题意 要求找出 从 2016-990528 中 是闰年 并 ...

  6. Jmeter参数化_CSV Data Set Config

    1. 在用函数助手进行参数化的时候遇到一个问题,每个线程组每次循环的时候读取的值都是一样的,为了解决这个问题,将函数助手替换为CSV_Data_Set_Config. 2. 添加配置元件csv dat ...

  7. js日期和时间戳互换

    <script> function js_strto_time(str_time){ var new_str = str_time.replace(/:/g,'-'); new_str = ...

  8. Canvas HTML5

    不支持的时候记得: <canvas id="stockGraph" width="150" height="150"> curr ...

  9. 细谈HTML解析模块

     细谈HTML解析模块 Html在网页中所占的位置,用一个简单直观的图给展示一下:    

  10. https证书自签

         https               http over ssl = https 443/tcp                 ssl: v3                 tls: ...