eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Генератор псевдослучайных чисел

Генератор псевдослучайных чисел

Дональд любит природу. Будучи программистом, Дональд пишет программы для имитации роста деревьев или построения реалистичных трехмерных ландшафтов. Для этого Дональду нужен хороший генератор псевдослучайных чисел. Он изобретает следующий метод для создания бесконечной последовательности 40-битных целых чисел без знака.

m := 1 << 40 // = 2^40 = 1 099 511 627 776
S(0) := 0x600DCAFE // = 1 611 516 670
S(n + 1) := (S(n) + (S(n) >> 20) + 12345) % m

В последней строке x >> 20 обозначает частное от евклидова деления x на 220, а x % m обозначает остаток от евклидова деления x на m.

В качестве самого первого теста, чтобы решить, действительно ли это хороший генератор псевдослучайных чисел, Дональд хочет подсчитать количество четных значений, произведенных этой последовательностью, чтобы проверить, достаточно ли оно близко к 50%. Ваша помощь будет приветствоваться.

Входные данные

Одно целое число n (0n < 263).

Выходные данные

Выведите одну строку с одним целым числом, соответствующим количеству четных значений в последовательности S(0), S(1), ..., S(n - 1).

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
3
Выходные данные #1
2
Входные данные #2
500000000
Выходные данные #2
250065867
Источник 2019 ACM Southwestern Europe Regional Contest (SWERC), Париж, Январь 26 (2020), Задача H