Harmonic Number
In mathematics, the nth harmonic number is the sum of the reciprocals of the first n natural numbers:
In this problem, you are given n, you have to find Hn.
Input
Input starts with an integer T (≤ 10000), denoting the number of test cases.
Each case starts with a line containing an integer n (1 ≤ n ≤ 108).
Output
For each case, print the case number and the nth harmonic number. Errors less than 10-8 will be ignored.
Sample Input
12
1
2
3
4
5
6
7
8
9
90000000
99999999
100000000
Sample Output
Case 1: 1
Case 2: 1.5
Case 3: 1.8333333333
Case 4: 2.0833333333
Case 5: 2.2833333333
Case 6: 2.450
Case 7: 2.5928571429
Case 8: 2.7178571429
Case 9: 2.8289682540
Case 10: 18.8925358988
Case 11: 18.9978964039
Case 12: 18.9978964139
求1+1/2+1/3+...+1/n
#include<bits/stdc++.h> #define e 0.57721566490153286060651209 using namespace std; typedef long long ll; double a[10005]; int main() { int tt=0,t,n,i; a[1]=1; for(i=2;i<=10000;i++){ a[i]=a[i-1]+1.0/i; } scanf("%d",&t); while(t--){ scanf("%d",&n); if(n<=10000){ printf("Case %d: %.10lf ",++tt,a[n]); } else{ double ans=log(n)+e+1.0/(2*n); printf("Case %d: %.10lf ",++tt,ans); } } return 0; }
Harmonic Number (II)
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 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).
For each case, print the case number and H(n) calculated by the code.
11
1
2
3
4
5
6
7
8
9
10
2147483647
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
求n+n/2+n/3+...+n/n
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int tt=0,T,i; ll n; cin>>T; while(T--) { cin>>n; int m=sqrt(n); ll sum=0; for(i=1;i<=m;i++){ sum+=n/i; } for(i=1;i<=m;i++){ sum+=(n/i-n/(i+1))*i; } if(m==n/m) sum-=m; cout<<"Case "<<++tt<<": "<<sum<<endl; } return 0; }