Description
Input
第一行正整数
N
Output
一行(有换行符), L ,表示水平延伸最远的整数距离 (不大于答案的最大整数)
样例
1
Output: 49
2
Output: 74
SampleOutput
N≤1018
数据保证答案 ≤106
Source
By 何朴藩
Solution
首先我们要推一下每往上堆一本书,可以堆多远。
我们只要注意一个地方就好:对于任意一本书,它上方的所有书的重心不能超出它的边缘。我们就可以用这个性质手推出每一本书可以超出下一本书多少。
我们可以推出,n本书的最大延伸距离就是
12∑i=1n1i
如果无法理解(推不出)可以参考Po姐姐的博客
传送门:http://blog.csdn.net/popoqqq/article/details/39755935?utm_source=tuicool
(本段参考Po姐姐博客)
然后我们就可以考虑用调和级数极限公式
limn→∞∑i=1n1i=ln(n+1)+r
其中
r
为欧拉常数 近似值约
极限公式在
n
较小时,误差会比较大。所以当
uses math;
var n,m:int64;
ans:extended;
begin
read(n,m);
if n<=10000 then while n>0 do begin
ans:=ans+0.5/n;
dec(n);
end else ans:=(ln(n+1)+0.5772156649)/2;
write(trunc(ans*m-0.0000000001));
end.