题目地址:http://www.luogu.org/problem/show?pid=1403 题目描述
科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel2”的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联允许用“Samuel2”进行数学研究。
小联最近在研究和约数有关的问题,他统计每个正数N的约数的个数,并以f(N)来表示。现在小联希望用“Samuel2”来统计f(1)到f(N)的累加和M。
f(n)表示n的约数个数,现在给出n,要求求出f(1)到f(n)的总和。
输入输出格式
输入格式: 输入一行,一个整数n
输出格式: 输出一个整数,表示总和
输入输出样例
输入样例#1: 3 输出样例#1: 5 说明
【数据范围】
20%N<=5000
100%N<=1000000 思路: 有这样一个规律, 以n=10为例,10以内的数,约数有1的为10/1==1个,约数有2的为10/2==5个 有这样一个规律就很好求了 PS:一直没思路,后来看别人博客看到这个规律,太机智了
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int n,i,s=
0;
cin>>n;
for(i=
1;i<=n;i++)
s+=n/i;
cout<<s;
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1308999.html