n - входной параметр программы. нужно посчитать сколько действий выполняет программа в зависимости от n.
Например, если программа выполняет ограниченное количество действий - вне зависимости от n она будет считаться конечное время. А если есть какие-нибудь циклы - время выполнения программы будет расти в зависимости от параметра.
пример 1: программа вычисления площади квадрата по его стороне.
два действия - перемножить два числа и вывести результат. F(n) = 2;
пример 2: программа вычисления факториала:
присваиваем результату 1
сравниваем n<2.
если верно - печатаем результат и выходим
иначе результат := результат * n
n:=n-1
и снова на сравнение
здесь F(n) = 1{начальное присвоение} + 3(n-1){сравнение и присвоения в цикле, который выполняется n-1 раза} + 1 {вывод результата} = 3n - 1
т.е время работы программы линейно возрастает при увеличении n
#include <iostream>
unsigned perfectSquareLessOrEqual(unsigned n) {
unsigned sum = 0;
for (unsigned i = 1; (sum + i) <= n; i += 2)
sum += i;
return sum;
}
int main() {
unsigned x, y;
std::cin >> x >> y;
const unsigned a = perfectSquareLessOrEqual(x) + perfectSquareLessOrEqual(y);
const unsigned b = perfectSquareLessOrEqual(x + y);
if (a < b)
std::cout << "Petya gives paint to Vasya";
else if (a > b)
std::cout << "Petya leaves paint to himself";
else
std::cout << "Equal";
return 0;
}
Объяснение: