题目

看到题解区很多人直接给出结论:答案为 \(\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]约数研究】的更多相关文章

  1. 洛谷——P1403 [AHOI2005]约数研究

    P1403 [AHOI2005]约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工 ...

  2. 洛谷P1403 [AHOI2005] 约数研究 [数论分块]

    题目传送门 约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩, ...

  3. P1403 [AHOI2005]约数研究 题解

    转载luogu某位神犇的题解QAQ 这题重点在于一个公式: f(i)=n/i 至于公式是怎么推出来的,看我解释: 1-n的因子个数,可以看成共含有2因子的数的个数+含有3因子的数的个数……+含有n因子 ...

  4. P1403 [AHOI2005]约数研究

    原题链接 https://www.luogu.org/problemnew/show/P1403 这个好难啊,求约数和一般的套路就是求1--n所有的约数再一一求和,求约数又要用for循环来判断.... ...

  5. 洛谷 P1403 [AHOI2005]约数研究

    怎么会有这么水的省选题 一定是个签到题. 好歹它也是个省选题,独立做出要纪念一下 很容易发现在1~n中,i的因子数是n / i 那就枚举每一个i然后加起来就OK了 #include<cstdio ...

  6. BZOJ 1968_P1403 [AHOI2005]约数研究--p2260bzoj2956-模积和∑----信息学中的数论分块

    第一部分 P1403 [AHOI2005]约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一 ...

  7. [AHOI2005]约数研究

    题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“Samu ...

  8. 【洛谷P1403】约数研究

    题目大意:求\[\sum\limits_{i=1}^n\sum\limits_{d|i}1\] 题解:交换求和顺序即可. \[\sum\limits_{i=1}^n\sum\limits_{d|i}1 ...

  9. BZOJ1968 [Ahoi2005] 约数研究

    Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input ...

随机推荐

  1. 047、Java中使用if…else if…else判断

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  2. 在xampp下安装thinkphp5

    在xampp2016下安装thinkphp5 (本人的坑,说白了就是把thinkphp5的文件放到htdocs下) 1.把该xampp中的php文件夹路径设置进环境变量,这样才能全局运行compose ...

  3. 八数码问题 双向BFS/Hsh链表存储

    转自洛谷 作者EndSaH #include<iostream> #include<string> #include<cmath> #include<cstr ...

  4. ES6 map()遍历、filter()筛选 的简单使用

    map(): map和forEach等遍历方法不同,在forEach中return语句是没有任何效果的,而map则可以改变当前循环的值,返回一个新的被改变过值之后的数组(map需return),一般用 ...

  5. 七十二、SAP中内表的修改,添加条件语句,多条目修改

    一.代码如下 二.MODIFY执行前断点数据 三.查看到数据如下 四.往下单步走一步,发现有3条数据被修改 五.执行后修改如下

  6. C# SqlBulkCopy 大量数据导入到数据库

    之前写了一篇C# 直接使用sql语句对数据库操作 (cmd.ExecuteNonQuery)的文章 这是针对数据量不大的操作,换句话说,效率太低,所以在此介绍一个效率高的.能大批量导入到数据库的方法 ...

  7. 修改element-ui里table中悬浮框中三角号的颜色及透明度设置

    .el-tooltip__popper,.el-tooltip__popper.is-dark{background:rgba(0,0,0,0.6) !important;} .el-tooltip_ ...

  8. 第十八篇 admin组件

    admin组件 admin组件使用 admin源码解析 admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以 ...

  9. Django 数据库配置

    DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', #你的数据库名称 'USER': ' ...

  10. intellij idea 怎么全局搜索

    1.Ctrl+N按名字搜索类 相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件,就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配,而且 ...