1968: [Ahoi2005]COMMON 约数研究
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2220 Solved: 1702
[ Submit][ Status][ Discuss]
Description
Input
只有一行一个整数 N(0 < N < 1000000)。
Output
只有一行输出,为整数M,即f(1)到f(N)的累加和。
Sample Input
3
Sample Output
5题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1968
用素数筛的思想跑一下就好。
代码:
/**************************************************************
Problem: 1968
User: 15110572028
Language: C++
Result: Accepted
Time:1364 ms
Memory:9880 kb
****************************************************************/
#include <cstdio>
#include <cstring>
#include <iostream>
#define LL long long
using namespace std;
LL a[1100000];
void Init(int n){
for(int i=2;i<=n;i++){
a[i]++;
for(int j=i;j<=n;j+=i){
a[j]++;
}
}
for(int i=2;i<=n;i++){
a[i]+=a[i-1];
}
}
int main(){
int n;
a[1]=1;
while(~scanf("%d",&n)){
Init(n);
printf("%lld\n",a[n]);
}
return 0;
}