小学奥数 蓄水池水管问题
关键一点是,需要假设出一个水池的容量。即4个水管的最小公倍数,再假设出每个水管的流速。然后模拟即可。
#include<iostream> #include<cstdio> using namespace std; int gcd(int a,int b) { return a%b?gcd(b,a%b):b; } int a,b,c,d,tot,temp; double t; int v[4]; int main() { scanf("%d%d%d%d",&a,&b,&c,&d); tot=a*b*c*d/gcd(gcd(a,b),gcd(c,d)); v[0]=-tot/d;v[1]=tot/a;v[2]=-tot/b;v[3]=tot/c; while(1){ t++; if(temp+v[(int)t%4]<tot) temp+=v[(int)t%4]; else{ t--; t+=(double)(tot-temp)/v[((int)t+1)%4]; break; } } printf("%.2f",t); }