Top.Mail.Ru
Ответы

Помогите с задачкой на 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

По дате
По рейтингу
Аватар пользователя
Новичок
12345678910111213141516171819202122
 #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; 
} 
Аватар пользователя
Мастер

Зависимость от последней цифры видно, но сформулировать не могу))

А задачка интересная, надеюсь, кто-нибудь напишет формулу..