(纪中)2422. Mixing Milk

(File IO): input:mixmilk.in output:mixmilk.out
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
Goto ProblemSet


题目描述
农业,尤其是生产牛奶,是一个竞争激烈的行业。 F a r m e r J o h n Farmer John FarmerJohn发现如果他不在牛奶生产工艺上有所创新,他的乳制品生意可能就会受到重创!
幸运的是, F a r m e r J o h n Farmer John FarmerJohn想出了一个好主意。他的三头获奖的乳牛, B e s s i e 、 E l s i e Bessie、Elsie BessieElsie M i l d r e d Mildred Mildred,各自产奶的口味有些许不同,他打算混合这三种牛奶调制出完美的口味。
为了混合这三种不同的牛奶,他拿来三个桶,其中分别装有三头奶牛所产的奶。这些桶可能有不同的容积,也可能并没有完全装满。然后他将桶 1 1 1的牛奶倒入桶 2 2 2,然后将桶 2 2 2中的牛奶倒入桶 3 3 3,然后将桶 3 3 3中的牛奶倒入桶 1 1 1,然后再将桶 1 1 1的牛奶倒入桶 2 2 2,如此周期性地操作,共计进行 100 100 100次(所以第 100 100 100次操作会是桶1倒入桶 2 2 2)。当 F a r m e r J o h n Farmer John FarmerJohn将桶 a a a中的牛奶倒入桶 b b b时,他会倒出尽可能多的牛奶,直到桶 a a a被倒空或是桶 b b b被倒满。
请告诉 F a r m e r J o h n Farmer John FarmerJohn当他倒了 100 100 100次之后每个桶里将会有多少牛奶。


输入
输入文件的第一行包含两个空格分隔的整数:第一个桶的容积 c 1 c1 c1,以及第一个桶里的牛奶量 m 1 m1 m1 c 1 c1 c1 m 1 m1 m1均为正,并且不超过 1 0 9 10^9 109。第二和第三行类似地包含第二和第三个桶的容积和牛奶量。

输出
输出三行,给出倒了 100 100 100次之后每个桶里的牛奶量。


样例输入
10 3
11 4
12 5

样例输出
0
10
2


数据范围限制


提示
在这个例子中,每倒一次之后每个桶里的牛奶量如下:
初始状态: 3 4 5

  1. 1 − > 2 1->2 1>2: 0 7 5
  2. 2 − > 3 2->3 2>3: 0 0 12
  3. 3 − > 1 3->1 3>1: 10 0 2
  4. 1 − > 2 1->2 1>2: 0 10 2
  5. 2 − > 3 2->3 2>3: 0 0 12
    (之后最后三个状态循环出现……)

解题思路
·暴力


代码

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int a[5],b[5],x,y,minn;
int main(){
	freopen("mixmilk.in","r",stdin);
	freopen("mixmilk.out","w",stdout);
    for(int i=1;i<=3;i++)
        scanf("%d%d",&a[i],&b[i]);
    for(int i=1;i<=100;i++)
    {
        x=(i-1)%3+1; 
        if(x==3)y=1;
        else y=x+1;
        minn=min(a[y]-b[y],b[x]);
        b[x]-=minn; 
        b[y]+=minn; 
    }
    printf("%d\n%d\n%d",b[1],b[2],b[3]);
}

你可能感兴趣的:(纪中)