(数论推理)Harmonic Number (II)

挺有趣的一道题。
求出前sqrt(n)项和:即n/1+n/2+…+n/sqrt(n)
而(n/1-n/2)就是后面项中1.x的个数
(n/2-n/3)就是后面项中2.x的个数
依次类推。。。

举两个例子:

n/1-n/2 = 5; 1.x
n/2-n/3 = 2 2.x
n/3-n/4 = 1 3.x <----- 重复,要减掉


n/1-n/2 = 10 1
n/2-n/3 = 4 2
n/3-n/4 = 1 3
n/4-n/5 = 1 4
由于n/sqrt(n) != sqrt(n)
故不存在重复的问题。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
   
	int t,cnt=0;
	scanf("%d", &t);
	while(t--) {
   
		ll n;
		scanf("%lld", &n);
		ll ans=0;
		ll x=sqrt(n);
		for(ll i=1; i<=x; i++) {
   
			ans+=(n/i);
			ans+=(n/i-n/(i+1))*i;
		}
		if(n/x==x) {
   
			ans-=x;
		}
		printf("Case %d: %lld\n",++cnt, ans);
	}
	return 0;
}
全部评论

相关推荐

实习回来快一个月了,海投海笔海测全干了,今天面了两个真的有点心碎,好难啊!&nbsp;感觉现在就是纯碰瓷互联网,焦虑,,,&nbsp;阿里云快给我泡出来!!!
小肥罗:别焦虑,心态不好影响健康,心态放平哦,我可以告诉你,我大三的暑假拿了15份offer,但是我投递了300+企业,整个暑假,我都是边学习,边改简历,边刷题,边投递简历,边应对笔试,面试,一天三家公司的笔试/面试,我一天没睡几个小时,一屁股坐在房间,就像钉在那里一样。。。我也哭过,但是哭完后我也是继续努力才有15份offer的,加油兄弟!不许气馁哈
点赞 评论 收藏
分享
Hyh_111:像这种hr就不用管了,基本没啥实力,换一个吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务