Тут геометрическая прогрессия. Из формулы суммы n членов геометрической прогрессии у меня получилось что-то такое:
h = floor( log(1. - (1.-b)*MAX/(double)a1) / log((double)b)); // в h количество тарелок при которых sum <= MAX
if(h > n)
cout << n << std::endl;
else
cout << h << std::endl;