ZOJ 1005

//2359674     2010-11-27 14:30:11     Accepted     1005     C     0     160     VRS
//1005 量筒倒水 从几个例子分析,知道只有两种唯一的倒水方式,其一是不断地倒掉A,B倒A,填满B,再B倒A;
//其二是不断地倒掉B,A倒B,填满A,再A倒B。第一种遇到当前容量等于AB之间时特殊处理,第二种遇到当前容量
//等于0到A-B之间时特殊处理。由于是Special Judge,所以任选一种方式就可以AC

 

#include<stdio.h>

int main()
{
    int A,B,N;
    int currGallons;
    while(scanf("%d %d %d",&A,&B,&N)!=EOF)
    {
        if(A==B){
            printf("fill B\nsuccess\n");
            continue;
        }
        printf("fill B\npour B A\n");
        currGallons=B-A;
        while(currGallons!=N)
        {
            if(currGallons>A){
                printf("empty A\npour B A\n");
                currGallons-=A;
            }
            else{
                printf("empty A\npour B A\nfill B\npour B A\n");
                currGallons=(currGallons+B-A)%B;
            }
        }
        printf("success\n");
    }
    return 0;
}

你可能感兴趣的:(ZOJ)