只能往一个方向倒,如c1=3,c2=5,a b从0 0->0 5->3 2->0 2->2 0->2 5->3 4->0 4->3 1->0 1->1 5->3 3->0 3->0 0,又回到了0 0,而且倒着推回去正好是c1一直往c2倒,因为0*c2%c1->1*c2%c1->...->c1*c2%c1==0
#include <iostream>
#include<cstdio> using namespace std; int a,b,n,c1,c2; void slove()
{
puts("fill B");
if(c2==n)
{
puts("success");
return;
}
b=;
while()//用b一直往a倒,在n!=a时b必定先达到n,若a往b倒时a达到n还要倒到b那
{
b+=c2;
while(b>c1)
{
puts("pour B A");
b-=c1;
if(b==n)
{
puts("success");
return ;
}
puts("empty A");
}
puts("pour B A");
puts("fill B");
}
} int main()
{
while(scanf("%d%d%d",&c1,&c2,&n)==)
{
if(n==||n>c2)
{
puts("success");
continue;
}
slove();
}
return ;
}