9895. Арифметические прогрессии

 

Пусть anbncn – арифметические прогрессии. Известно, что

a1 + b1 + c1 = p,

a2 + b2 + c2 = q

Для заданного натурального k найдите значение выражения ak + bk + ck.

 

Вход. Три целых числа p, q (|p|, |q| ≤ 1018), k (k > 0).

 

Выход. Выведите значение ak + bk + ck. Известно, что ответ по модулю не больше 1018.

 

Пример входа

Пример выхода

2 5 10

29

 

 

РЕШЕНИЕ

математика

 

Анализ алгоритма

Пусть da, db, dc – разницы соответственно прогрессий anbncn. Тогда

qp = (a2 a1) (b2 b1) + (c2 c1) = da + db + dc

Отсюда

ak + bk + ck = a1 + da * (k – 1) + b1 + db * (k – 1) + c1 + dc * (k – 1) =

(a1 + b1 + c1) + (da + db + dc) * (k – 1) =

p + (qp) * (k – 1)

 

Пример

Для заданного примера d = qp = 5 – 2 = 3.

Откуда a10 + b10 + c10 = p + d * 9 = 2 + 3 * 9 = 29.

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%lld %lld %lld", &p, &q, &k);

 

Вычисляем res = ak + bk + ck.

 

d = q - p;

res = p + d * (k - 1);

 

Выводим ответ.

 

printf("%lld\n", res);