P5951题解

· · 题解

P5951题解

题目传送门

这道题无非就是初二下物理浮力一章的基础题,拿到计算机上就更好做了。

我们需要考虑的就是:

第一点:物体的浮沉条件,物体密度与液体密度的关系(p 代表排开的液体,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;
}