zoukankan      html  css  js  c++  java
  • POJ NOI MATH-7648 蓄水池水管问题

    问题链接POJ NOI MATH-7648 蓄水池水管问题



    总时间限制:
    1000ms
    内存限制:
    65536kB
    描述

    蓄水池有甲、丙两条进水管和乙、丁两条排水管。

    要灌满一池水,单开甲管需要a小时,单开丙管需要c小时;要排光一池水,单开乙管需要b小时,单开丁管需要d小时。

    现在池内没有水,如果按甲乙丙丁的顺序循环单开各水管,每次每管开1小时,则多长时间后水开始溢出水池?

    保证一定会在有限时间内出现水溢出水池的情况。

    输入
    一行,四个不大于10的正整数a,b,c,d,两个整数之间用单个空格隔开。a < b, c < d
    输出
    一个浮点数,即水溢出水池的时间。舍入到小数点后两位。
    样例输入
    3 4 5 6
    样例输出
    24.90
    来源
    《奥数典型题举一反三(小学六年级)》 (ISBN 978-7-5445-2883-2) 第二章 第二讲 习题15



    问题分析

      模拟题,直接模拟。

      为了提高计算精度,使用分数进行模拟。

    程序说明

      (略)




    AC的C++语言程序:

    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    int main()
    {
        long a, b, c, d;
        long p, a2, b2, c2, d2, r;
        float t;
    
        cin >> a >> b >> c >> d;
    
        p = a * b * c * d;
        a2 = b * c * d;
        b2 = a * c * d;
        c2 = a * b * d;
        d2 = a * b * c;
    
        // 模拟处理
        t = 0;      // 时间
        r = p;      // 剩余体积
        for(;;) {
            if(a2 >= r) {
                t += (float)r / a2;
                break;
            } else {
                t += 1;
                r -= a2;
            }
    
            t += 1;
            r += b2;
    
            if(c2 >= r) {
                t += (float)r / c2;
                break;
            } else {
                t += 1;
                r -= c2;
            }
    
            t += 1;
            r += d2;
        }
    
        // 输出结果
        cout << fixed << setprecision(2) << t << endl;
    
        return 0;
    }



  • 相关阅读:
    ID控制tab切换
    jQuery控制图片的hover效果
    popup效果
    第一篇博客
    Java面试中hashCode()与equals(Object obj)方法关系的准确回答
    小福bbs凡事预则立
    编译cppunit
    EasyUI Datagrid数据网格
    发送邮件
    京东笔试
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563979.html
Copyright © 2011-2022 走看看