UVA571- Jugs

来源:互联网 发布:ios上python编辑器推荐 编辑:程序博客网 时间:2024/05/16 20:29

题意:两个水壶,分别给出两只水壶的容量和所要获得的水量。倒水是有规则的,刚开始两个水壶都是空的,倒水时要倒满,当A向B倒水时,倒完后其中一个水壶要为空,所以就相当于每次操作,其中一个水壶必须为空的。

思路:因为题目给出0 < ca <= cb, N < cb,并且ca与cb互质,所以只要每次A倒满,然后倒入B,如果B满了之后,再全倒掉,一直重复,知道得到cb = N


#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main() {    int ca, cb, na, nb, n;     while (scanf("%d %d %d", &ca, &cb, &n) != EOF) {       if (cb == n) {            printf("fill B\n");             printf("success\n");             continue;       }        na = nb = 0;       while (nb != n) {            if (na == 0) {                printf("fill A\n");                 na += ca;            }             if (nb == cb) {                printf("empty B\n");                   nb = 0;            }             nb += na;            na = 0;            if (cb < nb) {                na = nb - cb;                 nb = cb;            }              printf("pour A B\n");       }       printf("success\n");    }        return 0;}


0 0