终于等到你

众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

洛谷试炼场-简单数学问题-P1403 [AHOI2005]-因数

洛谷试炼场-简单数学问题

P1403 [AHOI2005]约数研究

Description

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

小联最近在研究和约数有关的问题,他统计每个正数N的约数的个数,并以f(N)来表示。例如12的约数有1、2、3、4、6、12。因此f(12)=6。下表给出了一些f(N)的取值:

Input

输入一行,一个整数n

Output

输出一个整数,表示总和

Sample Input

3

Sample Output

5

Hint

【数据范围】

20%N<=5000

100%N<=100000
普及组

题解:

如果单独一个数或者某些数的约数,应该是用唯一分解定律,看其质数的因子,最后排列组合一下。
重点在于一个公式:
f(i)=n/i
至于公式是怎么推出来的:
1-n的因子个数,可以看成共含有2因子的数的个+含有3因子的数的个数……+含有n因子的数的个数但在1~n中含有“2”这个因子的数有n/2个,3有n/3个,以此类推,公式就出来了

代码

#include <iostream>
#include<cmath>
using namespace std;

int main()
{
    int n;
    long long sum=0;
cin>>n;
for(int i=1;i<=n;i++)
    sum+=n/i;
cout<<sum<<endl;
}


posted @ 2018-10-13 10:15  gzr2018  阅读(181)  评论(0编辑  收藏  举报