注水问题
问题描述
已知注水管 A 单独注满一池水需要 a 小时,注水管 B 单独注满一池水需要 b 小时,排水管 C 将一池水排净需要 c 小时。初始时水池中没有水,同时打开注水管 A 和 B。t 小时后,再打开排水管 C,问水池注满一共需要多少小时?
保证打开水管 C 时水池还没有满,且保证水池最终可以注满。
输入
输入四个整数a,b,c,t(1<= a,b,c,t<=50)
输出
输出一个浮点数表示水池注满一共需要多少个小时(包括一开始的t小时)
样例输入
20 16 10 5
样例输出
40.00
数据规模与约定
时间限制:1s
内存限制: 256M
100%的数据保证1<= a,b,c,t<=50
思路
按照题意分析 我们假设需要x小时可以将水注满,A水管单独注满水池需要a小时,所以每小时 A 都会注水 1/a 的水量。b,c同理 每小时为1/b,1/c。
所以就有:
将公式整理最后得出:
代码如下(C语言):
#include <stdio.h>
#include<math.h>
int main() {
double a,b,c,t;
scanf("%lf%lf%lf%lf", &a, &b, &c, &t);
double x;
if (a >= 1 && a <= 50 && b >= 1 && b <= 50 && c >= 1 && c <= 50 && t >= 1 && t <= 50 && t < a&&t < b&&t < c) {
x = a * b * (c - t) / (b * c + a * c - a * b);
printf("%.2f", x);
}
return 0;
}
来自一个天天做水题的小蜡笔。