[BZOJ2048] [2009国家集训队] 书堆

Description

[BZOJ2048] [2009国家集训队] 书堆

Input

  第一行正整数 N M

Output

  一行(有换行符),L,表示水平延伸最远的整数距离 (不大于答案的最大整数)

Sample Input

#1
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 ;
}
上一篇:php对接微信小程序支付


下一篇:JSP入门3 Servlet