Description
Input
第一行正整数 N M
Output
一行(有换行符),L,表示水平延伸最远的整数距离 (不大于答案的最大整数)
Sample Input
#1
1 100
1 100
#2
2 100
Sample Output
#1
49
#2
74
HINT
N <= 10^18
数据保证答案 < 10^6
Source
By 何朴藩
Solution
好~~~严谨的物理题。画一下图就会发现最上面的书可以露出1/2(指相对它下面的那本书,下同),第二本书可以露出1/3,第三本书可以露出1/4,等等。
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
long long n, m;
double ans = ;
cin >> n >> m;
if(n <= 200000LL)
for(long long i = ; i <= n; i++)
ans += 1.0 * m / (i * );
else
ans = m * (log(1.0 * n + ) + 0.5772156649015329) / ;
cout << (int)ceil(ans) - << endl;
return ;
}