硬币求和
这道题实在是太迷惑了,先说求最小值,但其实既然堆一座塔,其实答案是不会变的。
答案都是
1
/
2
∗
∑
i
=
1
n
1/2*\sum_{i=1}^{n}
1/2∗∑i=1n 1/
n
\sqrt{n}
n
但是因为n<=1e18,所以不能直接求,
这时就需要化简式子
因为
1
2
∗
1
n
>
1
n
+
n
+
1
=
n
+
1
−
n
\frac{1}{2}*\frac{1}{\sqrt{n}}>\frac{1}{\sqrt{n}+\sqrt{n+1}}=\sqrt{n+1}-\sqrt{n}
21∗n1>n+n+11=n+1−n
同理,
1
2
∗
1
n
<
1
n
+
n
−
1
=
n
−
n
−
1
\frac{1}{2}*\frac{1}{\sqrt{n}}<\frac{1}{\sqrt{n}+\sqrt{n-1}}=\sqrt{n}-\sqrt{n-1}
21∗n1<n+n−11=n−n−1
所以
n
+
1
−
1
<
原
式
<
n
\sqrt{n+1}-1<原式<\sqrt{n}
n+1−1<原式<n
因为误差在±1之间,所以随便搞搞就行了
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
double l,r;
int main(){
scanf("%lld",&n);
l=sqrt(n+1)-1,r=sqrt(n);
ll ans=((l+r)/2);
printf("%lld",ans);
}