(数论推理)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;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-23 18:34
点赞 评论 收藏
分享
05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
把实习生当正职使昨天第一天就加班,晚上连口饭都没吃上,以后日子咋过,我不想干了
码农索隆:实习不怕忙,就怕干的活重复且没难度,要干就干那种有深度有难度的任务,这样才能快速的提升
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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