ZOJ 1005 Jugs

原题链接

题目大意:有一大一小两个杯子,相互倒水,直到其中一个杯子里剩下特定体积的水。描述这个过程。

解法:因为两个杯子的容积互质,所以只要用小杯子不断往大杯子倒水,大杯子灌满后就清空,大杯子里迟早会出现需要的体积的水。不过也有可能小杯子先剩下符合要求的体积的水。

参考代码:

#include<iostream>

using namespace std;

int main(){
	int ca,cb,n,q,r,i;
	int a,b;
	while(cin>>ca>>cb>>n){
		a=0;
		b=0;
		while(1){
			if(a==0){
				a=ca;
				cout<<"fill A"<<endl;
			}
			if(a+b>cb){
				a=a+b-cb;
				b=cb;
				cout<<"pour A B"<<endl;
			}
			else{
				b=a+b;
				a=0;
				cout<<"pour A B"<<endl;
			}
			if(b==n){
				cout<<"success"<<endl;
				break;
			}
			if(b==cb){
				b=0;
				cout<<"empty B"<<endl;
			}
		}
	}

	return 0;
}
原文地址:https://www.cnblogs.com/naive/p/3568709.html