Олимпиадный тренинг

Задача . D. Итерированная линейная функция


Рассмотрим линейную функцию f(x) = Ax + B. Введём обозначение g(0)(x) = x и g(n)(x) = f(g(n - 1)(x)), при n > 0. Для заданных целых значений A, B, n и x найдите значение g(n)(x) по модулю 109 + 7.

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

В единственной строке находятся четыре целых числа A, B, n и x (1 ≤ A, B, x ≤ 109, 1 ≤ n ≤ 1018) — параметры из условия задачи.

Обратите внимание, что данное значение n может быть слишком большим, поэтому вы должны использовать 64-битный тип данных. В языке C++ вы можете использовать тип long long и в языке Java вы можете использовать тип long.

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

Выведите одно целое число s — значение g(n)(x) по модулю 109 + 7.


Примеры
Входные данныеВыходные данные
1 3 4 1 1
7
2 3 4 2 1
25
3 3 4 3 1
79

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя