uva 571 - Jugs

2014-11-24 00:59:30 · 作者: · 浏览: 3
题目大意:给出A,B和aid,A表示小杯的容量,B表示大杯的容量,aid表示要求大杯中剩余的水量,有无限的水,给出方案,(A和B互质)
解题思路:A和B互质就说明了一定有解,因为它们的最大公约数为1。然后方案无非就是有四步组成,考虑清楚四总移动的条件就可以了。
#include   
#define max(a,b) (a)<(b) (a):(b)  
  
int main() {  
    int A, B, a, b, aid;  
    while (scanf("%d%d%d", &A, &B, &aid) == 3) {  
        a = b = 0;  
        while (1) {  
            if (b == aid) {  
                printf("success\n");  
                break;  
            }  
            else if (b == B) {  
                printf("empty B\n");  
                b = 0;  
            }  
            else if (a == 0) {  
                printf("fill A\n");  
                a = A;  
            }  
            else {  
                printf("pour A B\n");  
                int c = max(B - b, a);  
                b += c;  
                a -= c;  
            }  
        }  
    }  
    return 0;  
}