IOM 2018, Блиц, руски — Задача 31
ОЛИМПИАДА МЕГАПОЛИСОВ. Москва, 3 сентября 2018
Условие
Определите вывод следующей программы:
![Листинг программы на C++ из 26 пронумерованных строк: глобальные int k = 0 и vector of bool t(17, true); рекурсивная функция bool f(int l, int r) увеличивает k, при l == r возвращает t[l], иначе делит отрезок пополам по mid = (l + r) / 2 и возвращает f(l, mid) || f(mid + 1, r), если (int)log2(r - l + 1) % 2 == 1, и f(l, mid) && f(mid + 1, r) в противном случае; main задает t[1] = false, отсеивает составные числа меньше 17 решетом, вызывает f(1, 16) и выводит k.](https://pub-43290baaaff14857b5dd59610ea438c7.r2.dev/problems/iom-2018-blitz-ru/p31-fig1.png)
Решение
Внимание: Непълно решение
В архива няма официално решение на тази задача.
Оригинал в Архива: blitz-ru.pdf
ОЛИМПИАДА МЕГАПОЛИСОВ. Москва, 3 сентября 2018
Определите вывод следующей программы:
![Листинг программы на C++ из 26 пронумерованных строк: глобальные int k = 0 и vector of bool t(17, true); рекурсивная функция bool f(int l, int r) увеличивает k, при l == r возвращает t[l], иначе делит отрезок пополам по mid = (l + r) / 2 и возвращает f(l, mid) || f(mid + 1, r), если (int)log2(r - l + 1) % 2 == 1, и f(l, mid) && f(mid + 1, r) в противном случае; main задает t[1] = false, отсеивает составные числа меньше 17 решетом, вызывает f(1, 16) и выводит k.](https://pub-43290baaaff14857b5dd59610ea438c7.r2.dev/problems/iom-2018-blitz-ru/p31-fig1.png)
В архива няма официално решение на тази задача.
Оригинал в Архива: blitz-ru.pdf