题目大意:给出A,B和aid,A表示小杯的容量,B表示大杯的容量,aid表示要求大杯中剩余的水量,有无限的水,给出方案,(A和B互质)
解题思路:A和B互质就说明了一定有解,因为它们的最大公约数为1。然后方案无非就是有四步组成,考虑清楚四总移动的条件就可以了。
#include <stdio.h>
#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;
}