http://codevs.cn/problem/2606/

https://luogu.lohu.info/problem/show?pid=2424

题目背景

Smart最近沉迷于对约数的研究中。

题目描述

对于一个数X,函数f(X)表示X所有约数的和。例如:f(6)=1+2+3+6=12。对于一个X,Smart可以很快的算出f(X)。现在的问题是,给定两个正整数X,Y(X<Y),Smart希望尽快地算出f(X)+f(X+1)+……+f(Y)的值,你能帮助Smart算出这个值吗?

输入输出格式

输入格式:

输入文件仅一行,两个正整数X和Y(X<Y),表示需要计算f(X)+f(X+1)+……+f(Y)。

输出格式:

输出只有一行,为f(X)+f(X+1)+……+f(Y)的值。

输入输出样例

输入样例#1:

2 4
输出样例#1:

14
输入样例#2:

123 321
输出样例#2:

72543

说明

对于20%的数据有1≤X<Y≤105。

对于60%的数据有1≤X<Y≤1*107。

对于100%的数据有1≤X<Y≤2*109。

记住一点:求[l,r],先想想前缀和[1,r]-[1,l-1]

一开始想到的:

60分TLE

[1,n]数i的出现次数为n/i

就这个还是想了好久,写出来才发现的

智商啊!!!!!

1=1

2=1+2

3=1+    3

4=1+2+    4

5=1+           5

6=1+2+3+      6

#include<cstdio>
using namespace std;
int x,y;
long long ans;
int main()
{
scanf("%d%d",&x,&y);
for(int i=;i<=x-;i++) ans-=i*((x-)/i);
for(int i=;i<=y;i++) ans+=i*(y/i);
printf("%lld",ans);
}

AC做法:

除法分块

以12为例:

i               1    2    3   4  5  6  7  8  9  10  11  12

出现次数    12   6   4   3  2  2   1  1  1  1    1    1

可以发现数i在[1,n]中的出现次数相同的数是挨在一块的

由于挨着,所以它又是一个等差数列

所以可以出现次数相同的作为一块一起算

设每一块所在区间为[L,R]

可以枚举L,那么R=n/(n/L)

(不要问怎么想出来的,学长说脑子,O| ̄|_  ,需要扶助的智商啊啊啊啊o(≧口≦)o)

所以这一块的ans=每个数的出现次数(n/L)*这一块所包含的的的数的总和

其中这一块所包含的数的总和,用等差数列求和公式 (a1+an)*n/2,可得

=(L+R)*(R-L+1)/2

#include<cstdio>
using namespace std;
long long x,y;
long long work(long long n)
{
long long ans=,i=,j;
while(i<=n)
{
j=n/(n/i);
ans+=(n/i)*(i+j)*(j-i+)/;
i=j+;
}
return ans;
}
int main()
{
scanf("%lld%lld",&x,&y);
printf("%lld",work(y)-work(x-));
}

注意要用long long,因为ans+=后面那一串可能会爆int,70分

于是我就改成了ans+=1ll*(1ll*n/1ll*i)*(1ll*i+1ll*j)*(1ll*j-1ll*i+1)/2;

然后就0了,原因未知。。。

洛谷P2424/codevs 2606 约数和的更多相关文章

  1. 洛谷 P4902 乘积 (约数筛,前缀和(积))

    洛谷P4902乘积 题意简述: 给 $ t $ 组 $ (a,b) $ 求: $ \prod_{i=A}^{B}\prod_{j=1}^{i}(\frac{i}{j})^{\lfloor \frac{ ...

  2. 洛谷 - P2424 - 约数和 - 整除分块

    https://www.luogu.org/problemnew/show/P2424 记 \(\sigma(n)\) 为n的所有约数之和,例如 \(\sigma(6)=1+2+3+6=12\) . ...

  3. 洛谷 P2424 约数和

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

  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. codevs 2606 约数和问题

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

  7. 洛谷 1016 / codevs 1046 旅行家的预算

    https://www.luogu.org/problem/show?pid=1016 http://codevs.cn/problem/1046/ 题目描述 Description 一个旅行家想驾驶 ...

  8. 洛谷 P3327 【[SDOI2015]约数个数和】

    前置芝士 关于这个题,你必须知道一个这样奇奇怪怪的式子啊QAQ \[d(i*j)= \sum_{x|i} \sum_{y|j}[gcd(x,y)=1] \] 留坑,先感性理解:后面那个gcd是为了去重 ...

  9. codevs 2606 约数和问题 (数学+分块)

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

随机推荐

  1. java equals()方法的注意事项

    1.在写代码的时候,我们有时候需要判断两个相同类的对象的值是否全部相等,很多人想到的就是equals()方法,但是equals方法真的是可以比较吗?其实equals方法比较的并不是两个对象的值,它只是 ...

  2. unix网络编程——TCP套接字编程

    TCP客户端和服务端所需的基本套接字.服务器先启动,之后的某个时刻客户端启动并试图连接到服务器.之后客户端向服务器发送请求,服务器处理请求,并给客户端一个响应.该过程一直持续下去,直到客户端关闭,给服 ...

  3. synchronized、锁、多线程同步的原理是咋样

    先综述个结论: 一般说的synchronized用来做多线程同步功能,其实synchronized只是提供多线程互斥,而对象的wait()和notify()方法才提供线程的同步功能. 一般说synch ...

  4. 0523 Scrum项目6.0

    0523 团队项目6.0 一,组员任务完成情况 首页设计初步完成但是需要优化界面,只能简单的输出信息和在首页进行登录.界面极其简单.使用了Javabean的设计模式,进行改进,使得页面的里的代码看起来 ...

  5. HDU 2140 Michael Scofield's letter

    http://acm.hdu.edu.cn/showproblem.php?pid=2140 Problem Description I believe many people are the fan ...

  6. Selenium WebDriver 中鼠标和键盘事件分析及扩展(转)

    文章转自:http://www.ibm.com/developerworks/cn/java/j-lo-keyboard/

  7. 字符串拆分函数 func_splitstr

    create type str_split is table of varchar2(4000) ; 1 CREATE OR REPLACE FUNCTION splitstr(p_string IN ...

  8. python 创建目录

    Python对文件的操作还算是方便的,只需要包含os模块进来,使用相关函数即可实现目录的创建. 主要涉及到三个函数 1.os.path.exists(path) 判断一个目录是否存在 2.os.mak ...

  9. [转帖]22个必须学习的Linux安全命令

    22个必须学习的Linux安全命令 http://os.51cto.com/art/201808/581401.htm Linux系统的安全性涉及很多方面,从设置帐户到确保用户合法,限制比完成工作所需 ...

  10. Dubbo学习(一) Dubbo原理浅析

    一.初入Dubbo Dubbo学习文档: http://dubbo.incubator.apache.org/books/dubbo-user-book/ http://dubbo.incubator ...