1 条题解
-
0
自动搬运
来自洛谷,原作者为

s_r_f
这里是一个只会背板和fst的蒟蒻搬运于
2025-08-24 22:04:16,当前版本为作者最后更新于2019-01-31 21:00:50,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
这题....
一道极好的初中物理+(貌似是高中?)数学题。通过初中物理的学习,我们知道了杠杆平衡。
通过
打表/手算找规律,发现答案 = (1 / 2 + 1 / 4 + .. 1 / (2n)) * m.貌似是调和级数H(n) / 2???
ok,精度爆炸qwq.
好了,我们
baidu一下,发现有个公式: (ln(n) + 0.5772156649) / 2.怎么还是WA???
回顾下题面:
“如果某本书以上的所有书的重心的竖直射影不在这本书上,或者正好落在在这本书的边界上,那么这堆书是不稳定的,会因为重力而垮下来。”
所以。。。 我们的答案不能正好取到,还要减去一个重心的位移。。。
减去一个很小的实数(不影响精度)即可。
代码:
#include <bits/stdc++.h> #define LL long long #define db double using namespace std; inline LL read(){ LL x = 0,f = 1; char c = getchar(); while (c != EOF && !isdigit(c)) {if (c == '-') f = -1;c = getchar();} while (c != EOF && isdigit(c)) {x = x * 10 + c - '0';c = getchar();} return x * f; } inline void write(LL x){ int k = 0;char put[40]; if (!x) putchar('0'); if (x < 0) putchar('-'),x = -x; while (x) put[++k] = (x % 10) + '0',x /= 10; while (k) putchar(put[k]),--k; putchar('\n'); } LL n,m,ans; db f = 0,eps = 1e-6; int main(){ n = read(),m = read(); if (n >= 1e7) f = (log(n) + 0.5772156649 )/ 2; else for (int i = 2; i <= n*2; ++i,++i ) f += 1.0 / i; ///小数据一定要暴力!上面只是个近似公式!!!! ans = m * f - eps; write(ans); return 0; }
- 1
信息
- ID
- 3732
- 时间
- 10000ms
- 内存
- 253~500MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者