Я кодировал код simple question на основе кода. Он читается следующим образом:Понимание временной сложности заданного кода
Vasya имеет n пар носков. Утром каждого дня Вася должен надеть пару носков, прежде чем идти в школу. Вечером, когда он приходит домой, Вася снимает использованные носки и отбрасывает их. Каждый м-й день (в дни с номерами м, 2 м, 3 м, ...) мама покупает пару носков Васе. Она делает это поздно вечером, так что Вася не может надеть новую пару носков до следующего дня. Сколько дней подряд проходит до тех пор, пока Вася не выбежит из носков?
Входной
В единственной строке содержит два целых числа п и т (1 ≤ N ≤ 100, 2 ≤ M ≤ 100), разделенных пробелом.
Выход
печати одно целое число - ответ на задачу.
Мое решение заключается в следующем:
int main()
{
int res,i,n,m;
cin >> n >> m;
i = 1;
res = n;
while(res >= i*m)
{
res++;
i++;
}
cout << res;
return 0;
}
Какой должна быть временная сложность? Его определенно не O (n), так как мы увеличиваем с шагом m. Будет ли это log n (base m)? Но и оригинал n увеличивается со временем !!!
Просьба указать некоторые обоснования.
Возможный дубликат [Big O, как вы его вычисляете/приближаете?] (http://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it) –