上海市计算机学会竞赛平台2024年8月月赛丙组调和级数
题目描述
给定一个整数 nn,记 ⌊x⌋⌊x⌋ 表示不超过实数 xx 的最大整数,请求出
⌊n1⌋+⌊n2⌋+⌊n3⌋+⋯+⌊nn−1⌋+⌊nn⌋⌊1n⌋+⌊2n⌋+⌊3n⌋+⋯+⌊n−1n⌋+⌊nn⌋
输入格式
- 单个整数:表示 nn
输出格式
- 单个整数:表示答案
数据范围
- 30%30% 的数据,n≤1,000n≤1,000
- 60%60% 的数据,n≤1,000,000n≤1,000,000
- 100%100% 的数据,1≤n≤1,000,000,0001≤n≤1,000,000,000
样例数据
输入:
5
输出:
10
说明:
5+2+1+1+1
详见代码:
#include<bits/stdc++.h>
using namespace std;
long long n;
long long ans = 0;
int main()
{
cin >> n;
int m = 0;
for(int i = 1; i <= n; i++)
{
int d = n / i - (n / (i + 1));
ans += i * d;
if (d == 1)
{
m = n / (i + 1);
break;
}
}
for(int i = 1; i <= m; i++)
{
ans += n / i;
}
cout << ans;
return 0;
}