diff --git a/8.16/L-HarmonicNumber(II)/Readme.md b/8.16/L-HarmonicNumber(II)/Readme.md new file mode 100644 index 0000000..28066f4 --- /dev/null +++ b/8.16/L-HarmonicNumber(II)/Readme.md @@ -0,0 +1,15 @@ +# L - Harmonic Number (II) +* https://vjudge.net/contest/509210#problem/L +### 题意 +res = res + n / i;求和,1 ≤ n < 2^31 +### 做法 +左右两部分考虑 +sqrt(n)前的直接求 +后面的按(n/2~1,n/3~n/2……,n/m)求 +特判m +### 关键词 + +### 易错点 +* 特判m +### 工具箱 +* \ No newline at end of file diff --git a/8.16/L-HarmonicNumber(II)/main.cpp b/8.16/L-HarmonicNumber(II)/main.cpp new file mode 100644 index 0000000..1c80102 --- /dev/null +++ b/8.16/L-HarmonicNumber(II)/main.cpp @@ -0,0 +1,31 @@ + +#include +#include +#include +#include +using namespace std; +int main() +{ + long long t; + long long t1=0; + long long ans; + long long n; + long long now; + long long m; + scanf("%lld",&t); + while(t--) + { + scanf("%lld",&n); + ans=0; + m=sqrt(n); + for(long long i=1;i<=m; i++) + { + now=n/i-n/(i+1); + ans+=(i*now); + ans+=(n/i); + } + if(n/m==m)ans-=m; + printf("Case %lld: %lld\n",++t1,ans); + } + return 0; +}