1245 - Harmonic Number (II)---LightOJ1245

http://lightoj.com/volume_showproblem.php?problem=1245

题目大意:一个数n除以1到n之和

分析:暴力肯定不行,我们可以先求1~sqrt(n)之间的每个数的个数,然后再求n除以1~sqrt(n)之间的数的和

这样算下来就只有2*sqrt(n)的复杂度

最后还要排除多加的,、

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue> using namespace std;
typedef long long int LL;
#define N 10001000
#define ESP 1e-8
#define INF 0x3f3f3f3f
#define memset(a,b) memset(a,b,sizeof(a)) int main()
{
int T, t=;
scanf("%d", &T);
while(T --)
{
LL n;
scanf("%lld", &n); LL sum =;
for(int i=; i<=sqrt(n); i++)
{
sum += n/i;
} for(int i=; i<=sqrt(n); i++)
{
sum += (n/i - n/(i+)) * i;
} if(n/(int)sqrt(n) == (int)sqrt(n))
sum -= (n/sqrt(n) - n/(sqrt(n)+)) * sqrt(n); printf("Case %d: %lld\n", t++, sum);
}
return ;
}
上一篇:Android HandlerThread 详解


下一篇:Handler的另外一种用法(HandlerThread)