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