У меня есть простое, но запутанное сомнение в том, что приведенная ниже программа работает в экспоненциальном времени. Вопрос в том, что: введя целое число + ve, распечатайте его. Подвох в том, что вы сознательно делаете это в цикле , например:
int input,output=0;
cin >> input;
while (input--) ++output; // Takes time proportional to the value of input
cout << output;
Я утверждаю, что эта проблема работает в геометрической прогрессии. Потому что, как только вы увеличиваете количество бит на входе на 1, программе требуется вдвое больше времени для выполнения. Другими словами, для распечатки log2 (входных) битов требуется O (входное) время.
Правильно ли это рассуждение?