// Date: 07-11-22 08-04-25 Khu namespace Problems { abstract class DivisibleProblemQAI : Problem { protected bool isDirectlySolvable; protected abstract void CheckSolvability (); protected abstract void Divide (); // Precondition: !isDirectlySolvable protected virtual void ComputeSolution () // Template method. { while (true) { CheckSolvability(); if (isDirectlySolvable) break; Divide(); } } } }