EduBrick

E. Функция на больших числах

2000 мс · 256 МБ · всё или ничего

Та же функция: f(0)=0f(0) = 0, f(1)=1f(1) = 1, f(2n)=f(n)f(2n) = f(n), f(2n+1)=f(n)+f(n+1)f(2n+1) = f(n) + f(n+1).

Граница выросла до 101810^{18}. Приём тот же, но теперь надо проследить, что ни аргумент, ни ответ не переполняют тип.

Ответ помещается в 64-битный тип: при n≤1018n \le 10^{18} наибольшее значение ff равно 2 504 730 781 961 и достигается на n=960 767 920 505 705 813n = 960\,767\,920\,505\,705\,813.

Здесь запоминание уже обязательно. Без него на этом самом числе рекурсия не заканчивается за разумное время, а с ним различных аргументов ровно 100.

Формат ввода

Одна строка содержит число nn (0≤n≤10180 \le n \le 10^{18}).

Формат вывода

Одно число — f(n)f(n).

Примеры

ввод
10
вывод
3
ввод
0
вывод
0
Войдите, чтобы отправлять решения.