小学奥数 蓄水池水管问题

关键一点是,需要假设出一个水池的容量。即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);
}
posted @ 2015-10-17 11:04  Martrix99  阅读(829)  评论(0编辑  收藏  举报