博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LightOJ 1245(Harmonic Number (II))
阅读量:6575 次
发布时间:2019-06-24

本文共 1303 字,大约阅读时间需要 4 分钟。

I was trying to solve problem '1234 - Harmonic Number', I wrote the following code

long long H( int n ) {

    long long res = 0;
    for( int i = 1; i <= n; i++ )
        res = res + n / i;
    return res;
}

Yes, my error was that I was using the integer divisions only. However, you are given n, you have to find H(n) as in my code.

Input

Input starts with an integer T (≤ 1000), denoting the number of test cases.

Each case starts with a line containing an integer n (1 ≤ n < 231).

Output

For each case, print the case number and H(n) calculated by the code.

Sample Input

11

1

2

3

4

5

6

7

8

9

10

2147483647

Sample Output

Case 1: 1

Case 2: 3

Case 3: 5

Case 4: 8

Case 5: 10

Case 6: 14

Case 7: 16

Case 8: 20

Case 9: 23

Case 10: 27

Case 11: 46475828386

 

题意:求f(n)=n/1+n/2.....n/n,其中n/i保留整数

分析:看了一个大神的blog,f=n/x这个函数关于y = x 对称对称点刚好是sqrt(n),

于是就简单了直接求sum+n/i (i*i<n && i >=1),然后乘以2,再减去i*i即可。

#include
#include
//f=N/x,对称点是sqrt(N) long long H(int N){ int K=sqrt(N); long long ans=0; for(int i=1;i<=K;i++) ans+=N/i; ans*=2; ans-=K*K; return ans;}int main(){ int T,N,cas=1; scanf("%d",&T); while(T--) { scanf("%d",&N); printf("Case %d: %lld\n",cas++,H(N)); } return 0;}
View Code

 

 

 

 

转载于:https://www.cnblogs.com/ACRykl/p/8598119.html

你可能感兴趣的文章
maven setting
查看>>
二叉树中和为某一值的路径
查看>>
Android 应用语言设置的实现
查看>>
深度解析Istio系列之安全模块篇
查看>>
Linux 系统 审计
查看>>
uPortal 5.2.1特性及定制清单
查看>>
基于TP5的微信的公众号获取登录用户信息
查看>>
大数据系列8:Sqoop – HADOOP和RDBMS数据交换
查看>>
Jenkins 安装笔记
查看>>
SonarQube + Scanner的安装配置及使用
查看>>
百度地图
查看>>
PHP 变色验证码实例
查看>>
XPC
查看>>
《Concise课程表》开发过程总结
查看>>
Mysql Explain 详解
查看>>
[java基础]一文理解java多线程必备的sychronized关键字,从此不再混淆!
查看>>
mongodb副本集部署
查看>>
关于图片或者文件在数据库的存储方式归纳
查看>>
BigInteger的简单用法
查看>>
mysql创建utf-8字符集数据库
查看>>