Помогите с задачкой на C++ или Python
Математик Саша
Мальчик Саша очень любит заниматься математикой. На уроках математики он показывает прекрасные результаты, и поэтому учительница дала ему специальное задание. Она написала на доске некоторое число a, и попросила Сашу n раз взять последнюю цифру числа, записанного на доске, прибавить ее к числу, и вместо старого числа записать полученную сумму.
Саша знает, что часто в таких задачах есть способ сразу получить итоговое число, но он слишком занят доказательством теорем по геометрии, поэтому он попросил у вас помощи. Помогите Саше найти число, которое станет записано на доске после n таких действий.
Формат входных данных
Единственная строка содержит два целых числа a и n (0⩽a,n⩽109) — число, которое было исходно записано на доске и количество проделанных действий.
Формат выходных данных
В единственной строке выведите то число, которое будет записано на доске после n действий.
Пояснение к примеру
В первом примере на доске записано 127, последняя цифра равна 7. После прибавления 7 на доске будет записано число 134. Последняя цифра у него равна 4, после прибавления 4 будет записано число 138.
Ввод
127 2
Вывод
138
Ввод
3 9
Вывод
46
#include <iostream>
int main() {
unsigned long long a, n;
std::cin >> a >> n;
if (n == 0ULL) {
std::cout << a;
} else if (a % 5ULL == 0ULL) {
std::cout << a + a % 10ULL;
} else {
a += a % 10ULL;
constexpr auto periodLength = 4ULL;
const auto incompletePeriodLength = (n - 1ULL) % periodLength;
for (auto i = 0ULL; i < incompletePeriodLength; ++i)
a += a % 10ULL;
const auto periodsCount = (n - 1ULL) / periodLength;
constexpr auto sumPeriod = 2ULL + 4ULL + 8ULL + 6ULL;
a += periodsCount * sumPeriod;
std::cout << a;
}
return 0;
} Зависимость от последней цифры видно, но сформулировать не могу))
А задачка интересная, надеюсь, кто-нибудь напишет формулу..