充分な長さを最初に作って、それを切断して作る。
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;
}
};