博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ NOI MATH-7648 蓄水池水管问题
阅读量:7060 次
发布时间:2019-06-28

本文共 1211 字,大约阅读时间需要 4 分钟。

问题链接
总时间限制:
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 
#include
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;}

转载于:https://www.cnblogs.com/tigerisland/p/7563979.html

你可能感兴趣的文章
angular 当使用ng-repeat 时出现 $$hashKey的键值对
查看>>
GoldenGate 性能优化方法
查看>>
正则表达式和re模块
查看>>
[区块链]Merkle Tree
查看>>
Token 认证
查看>>
搜索服务solr 一二事(1) - solr-5.5 使用自带Jetty或者tomcat 搭建单机版搜索服务器...
查看>>
Html5新增加的属性
查看>>
php生成图片缩略图,支持png透明
查看>>
Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
查看>>
论一个蒟蒻的脑子里可以有多少坑(貌似咕了……目前更新保持在noip阶段)
查看>>
Python第三方库安装和卸载zz
查看>>
C++——虚函数表解析
查看>>
重磅!共享单车漏洞独家发布。
查看>>
html中特殊符号
查看>>
为什么 SharedPreferences 可以直接 调用,前面却没有对象
查看>>
php fsockopen 中多线程的解决办法
查看>>
yii框架后台过滤器的使用 安全防护
查看>>
[nginx]lua操作redis
查看>>
第四章 串和数组 (主要kmp算法)
查看>>
laravel 把对象换为数组以及 foreach循环遍历
查看>>