首页 > 其他 > 详细

1245 - Harmonic Number (II)---LightOJ1245

时间:2016-05-31 22:23:12      阅读:166      评论:0      收藏:0      [点我收藏+]

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=1;
    scanf("%d", &T);
    while(T --)
    {
        LL n;
        scanf("%lld", &n);

        LL sum =0;
        for(int i=1; i<=sqrt(n); i++)
        {
            sum += n/i;
        }

        for(int i=1; i<=sqrt(n); i++)
        {
            sum += (n/i - n/(i+1)) * i;
        }

        if(n/(int)sqrt(n) == (int)sqrt(n))
            sum -= (n/sqrt(n) - n/(sqrt(n)+1)) * sqrt(n);

        printf("Case %d: %lld\n", t++, sum);
    }
    return 0;
}

 

1245 - Harmonic Number (II)---LightOJ1245

原文:http://www.cnblogs.com/linliu/p/5547543.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!