P5951题解
P5951题解
题目传送门
这道题无非就是初二下物理浮力一章的基础题,拿到计算机上就更好做了。
我们需要考虑的就是:
第一点:物体的浮沉条件,物体密度与液体密度的关系(p 代表排开的液体,w 代表物体)
- 在物体密度小于液体密度时,物体会漂浮,这样一来
V_p = \dfrac{\rho_w}{\rho_p}\times V_w 。 - 在物体密度等于液体密度时,物体会悬浮,这样一来
V_p = V_w 。 - 在物体密度大于液体密度时,物体会沉底,这样一来也是
V_p = V_w 。
第二点:液面升高的高度怎么算
代码如下:
//P5951(请忽略丑陋的rou)
#include <iostream>
#include <iomanip>
using namespace std;
int S, H, V, n;
double a, rou;
int main(){
cin >> S >> H >> V;
double now_h = V * 1.0 / S;
cin >> n;
for(int i = 1; i <= n; i ++){
cin >> a >> rou;
//如果物体密度小于液体密度,v排 = rou物 / rou液 * v物
if(rou < 1) now_h += a * a * a * rou / S;
//如果物体密度大于等于液体密度,v排 = v物
else now_h += a * a * a / S;
}
cout << fixed << setprecision(7) << now_h << endl;
return 0;
}