题解 P1403 【[AHOI2005]约数研究】
看到题解区很多人直接给出结论:答案为 \(\displaystyle \sum_{i=1}^n\lfloor{n\over i}\rfloor\) ,没给出证明,这里给出证明
【分析】
首先,我们可以知道 \(\displaystyle f(n)=\sum_{d\mid n}1\)
有的同学看不懂这个公式,我解释一下,这个公式表达:
枚举 \(n\) 的因数 \(d\),每枚举一个因数 \(d\), \(f(n)\) 加 \(1\)
\(d\mid n\) 指 \(d\) 是 \(n\) 的因数
这样一来,我们就可以和题目的对应上了: \(f(n)\) 代表 \(n\) 的因数个数
\(\displaystyle f(n)=\sum_{d\mid n}1\) 还有一种表达方式是 \(\displaystyle f(n)=\sum_{d=1}^n[d\mid n]\)
后面那个鬼东西 \([d\mid n]\) 是一个判断正误的函数,正确为 \(1\) ,错误为 \(0\)
这个应该理解起来也不难:
枚举每一个数 \(d\) ,当 \(d\) 是 \(n\) 的因数时, \(f(n)\) 加 \(1\)
题目要求的 \(\displaystyle M=\sum_{i=1}^n f(i)\)
我们代入上面的定义式:
\(\quad \displaystyle M\)
\(\displaystyle=\sum_{i=1}^n\sum_{d\mid i}1\)
\(\displaystyle=\sum_{i=1}^n\sum_{d=1}^i[d\mid i]\)
我们调换一下枚举的顺序,把 \(d\) 的枚举提前。
相当于考虑 \(d=1\) 时,对 \(i=1,2,3\dots n\) 的贡献; \(d=2\) 时对 \(i=1,2,3\dots n\) 的贡献; \(\dots\) ;\(d=n\) 时对 \(i=1,2,3\dots n\) 的贡献
\(\displaystyle=\sum_{d=1}^n\sum_{i=1}^n[d\mid i]\)
对于一个固定的 \(d\) ,\(\displaystyle\sum_{i=1}^n[d\mid i]\) 的意义非常直观:
\(1\)~\(n\) 中,有多少个数以 \(d\) 为因数,即多少个数是 \(d\) 的倍数
应该是 \(\lfloor{n\over d}\rfloor\) 吧
所以我们得到 \(\displaystyle M=\sum_{d=1}^n\lfloor{n\over d}\rfloor\)
【代码】
那本蒟蒻就放 我码风极丑的 代码了:
C++ 版:
#include<iostream>
using namespace std;
int main(){
int n,ans=0;
cin>>n;
for(int i=1;i<=n;i++) ans+=n/i;
cout<<ans;
}
Python 3 版:
ans=0
n=int(input())
for i in range(1,n+1):
ans+=n//i
print(ans)
最后安利一下本蒟蒻的博客
题解 P1403 【[AHOI2005]约数研究】的更多相关文章
- 洛谷——P1403 [AHOI2005]约数研究
P1403 [AHOI2005]约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工 ...
- 洛谷P1403 [AHOI2005] 约数研究 [数论分块]
题目传送门 约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩, ...
- P1403 [AHOI2005]约数研究 题解
转载luogu某位神犇的题解QAQ 这题重点在于一个公式: f(i)=n/i 至于公式是怎么推出来的,看我解释: 1-n的因子个数,可以看成共含有2因子的数的个数+含有3因子的数的个数……+含有n因子 ...
- P1403 [AHOI2005]约数研究
原题链接 https://www.luogu.org/problemnew/show/P1403 这个好难啊,求约数和一般的套路就是求1--n所有的约数再一一求和,求约数又要用for循环来判断.... ...
- 洛谷 P1403 [AHOI2005]约数研究
怎么会有这么水的省选题 一定是个签到题. 好歹它也是个省选题,独立做出要纪念一下 很容易发现在1~n中,i的因子数是n / i 那就枚举每一个i然后加起来就OK了 #include<cstdio ...
- BZOJ 1968_P1403 [AHOI2005]约数研究--p2260bzoj2956-模积和∑----信息学中的数论分块
第一部分 P1403 [AHOI2005]约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一 ...
- [AHOI2005]约数研究
题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“Samu ...
- 【洛谷P1403】约数研究
题目大意:求\[\sum\limits_{i=1}^n\sum\limits_{d|i}1\] 题解:交换求和顺序即可. \[\sum\limits_{i=1}^n\sum\limits_{d|i}1 ...
- BZOJ1968 [Ahoi2005] 约数研究
Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input ...
随机推荐
- Netty简单认识
简介 Netty 是由JBOSS提供的一个 Java开源框架, 现在是 Github上的开源项目 Netty 是一个异步的.基于事件驱动的网络应用框架式, 用以快速开发高性能.高可靠性的网路IO程序 ...
- 《YouTube 网站的架构演进》阅读笔记
概述 YouTube 在国内是个404网站,需要翻墙得见,这是有用的废话,先铺垫一下. 从全球网站来看,它仅次于母公司 Google,全球排名位列第2.每天超过5亿以上视频播放量,平均每个用户点击10 ...
- 关于torchvision.models中VGG的笔记
VGG 主要有两种结构,分别是 VGG16 和 VGG19,两者并没有本质上的区别,只是网络深度不一样. 对于给定的感受野,采用堆积的小卷积核是优于采用大的卷积核的,因为多层非线性层可以增加网络深度来 ...
- Yarn的资源调优
一.概述 每个job提交到yarn上执行时,都会分配Container容器去运行,而这个容器需要资源才能运行,这个资源就是Cpu和内存. 1.CPU资源调度 目前的CPU被Yarn划分为虚拟CPU,这 ...
- 九九乘法表的四种三角形排布方式(for循环以及while循环的互换)
#region //右上 for (int i = 1; i <= 9; i++){ for (int j = 1; j <= 9; j++){ if (i > j){ Consol ...
- Linux: 桥接 NET HOST-only
桥接 虚拟机会利用真实的网卡和真实计算机之间通信 还能和同一局域网之间的计算机之间通信 缺点:会耗费一个ip地址 NET:虚拟机会通过VMnet8 虚拟的网卡与真实计算机之间通信 如果真实计可 ...
- 逆战:微信小程序
微信小程序的生命周期 onLaunch: function(options) { // ...
- 将visual sdudio+Qt5.12 制作的程序打包成单个exe
在GitHub上下载了个qt程序,由于C++不太会,经过安装qt.修改编码等一系列操作终于可以运行了. 生成的exe在运行时依赖很多dll或者图片文件,直接拷贝到其他电脑上无法运行,可以将依赖的dll ...
- 对plotTree的解释
1.>>>a = 1/2/2 >>>a >>>0.25 2.def plotMidText(cntrPt,parentPt,txtString ...
- hdu 1950 Bridging signals 求最长子序列 ( 二分模板 )
Bridging signals Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...