// Header file: GcdProblemQAI.hpp
// Description: Implementation: Gcd problem, query-command interface, iterative.
// Date: 2011-05-12 Khu

#ifndef GCD_PROBLEM_QAI
#define GCD_PROBLEM_QAI

#include "DivisibleProblemQAI.hpp"
#include "GcdSolution.hpp"

	class GcdProblemQAI : public DivisibleProblemQAI<GcdSolution>
	{
		protected:
			GcdSolution * _solution;
			
            int _p, _q, r, s;
            
			void check_solvability ();
			void divide ();
			
		public:
			GcdSolution & solution () const {return *_solution;}
			
			int p () const {return _p;}
			int q () const {return _q;}
			
            virtual void set (int new_p, int new_q);
 			
 			GcdProblemQAI (); 
            virtual ~GcdProblemQAI ();
	};

#endif // GCD_PROBLEM_QAI
