EduBrick

J. Степень за логарифм

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

Вычислите ab mod ma^b \bmod m.

Умножать bb раз нельзя: показатель до 101810^{18}. Рекурсия справляется за логарифм:

ab={1,b=0(ab/2)2,b чётноa⋅ab−1,b нечётноa^b = \begin{cases} 1, & b = 0 \\ (a^{b/2})^2, & b \text{ чётно} \\ a \cdot a^{b-1}, & b \text{ нечётно} \end{cases}

Обратите внимание, что при чётном bb вызов один, а не два: если написать ab/2⋅ab/2a^{b/2} \cdot a^{b/2} двумя вызовами, глубина останется логарифмической, а число вызовов станет линейным по bb.

Формат ввода

Одна строка содержит числа aa, bb и mm (0≤a≤10180 \le a \le 10^{18}, 0≤b≤10180 \le b \le 10^{18}, 1≤m≤10181 \le m \le 10^{18}).

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

Одно число — ab mod ma^b \bmod m.

Примеры

ввод
2 10 1000
вывод
24
ввод
0 5 7
вывод
0
Войдите, чтобы отправлять решения.