充分な長さを最初に作って、それを切断して作る。
class BoardSplitting { public: int minimumCuts(int dL, int dC, int aL) { vector<int> v; v.push_back(0); while (v.back() <= dL * dC) { v.push_back(v.back() + aL); } int ret = 0; for (int i = 0; i < (int)dC; ++i) { if (binary_search(v.begin(), v.end(), (i + 1) * dL)) ; else ++ret; } return ret; } };