P a r t Part Part 1 1 1 读题
科学家们在 S a m u e l Samuel Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“ S a m u e l Samuel Samuel I I II II”的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“ S a m u e Samue Samue I I II II”进行数学研究。
小联最近在研究和约数有关的问题,他统计每个正数N的约数的个数,并以
f
(
n
)
f(n)
f(n)来表示。例如
12
12
12的约数有
1
、
2
、
3
、
4
、
6
、
12
1、2、3、4、6、12
1、2、3、4、6、12。因此
f
(
12
)
=
6
f(12)=6
f(12)=6。下表给出了一些
f
(
n
)
f(n)
f(n)的取值:
现在小联希望用“
S
a
m
u
e
Samue
Samue
I
I
II
II”来统计
f
(
1
)
f(1)
f(1)到
f
(
n
)
f(n)
f(n)的累加和
M
M
M
f ( n ) f(n) f(n)表示n的约数个数,现在给出 n n n,要求求出 f ( 1 ) f(1) f(1)到 f ( n ) f(n) f(n)的总和。
输入格式
输入一行,一个整数 n n n。
输出格式
输出一个整数,表示总和。
输入样例
3
输出样例
5
数据范围与提示
对于 20 % 20\% 20%的数据, N ≤ 5000 N≤5000 N≤5000
对于 100 % 100\% 100%的数据, N ≤ 100000 N≤100000 N≤100000
P
a
r
t
Part
Part
2
2
2 思路
由此,我们知道了,只需要计算出循环中 n ÷ i n÷i n÷i的值就可以了,也就是如下代码:
for(int i=1;i<=n;i++)s+=n/i;//s是计数器
那我们只需要写上定义、输入、输出就可以啦!
小tip:大家可以先根据思路,写一下代码哦!
P a r t Part Part 3 3 3 代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,s=0;
cin>>n;
for(int i=1;i<=n;i++)s+=n/i;
cout<<s;
return 0;
}
听完后,是不是觉得很简单呢?赶快自己去试一下吧!!!
作者写公式不容易,麻烦点个赞支持下吧