...

четверг, 8 августа 2013 г.

Возведение в степень (задача)


сегодня в 13:38


Даны два числа — a и b (, , а и b не равны одновременно 0).

Необходимо вывести последнюю цифру десятичной записи числа .



Решение

Используя факт, что на последнюю цифру произведения влияют только последние цифры перемножаемых чисел, можно реализовать алгоритм быстрого возведения в степень, оставляя каждый раз только последнюю цифру (остаток от деления на 10).

Самое лаконичное решение получается на языке Python: встроенная функция pow(a,b,m) имеет третий (необязательный) параметр – модуль, по которому вычисляется результат.

Существует другой способ решения задачи: заметим закономерность, что при возведении числа в степень последняя цифра начинает повторяться с некоторой периодичностью. Например, для двойки: 2,4,8,16,32,64… Возведем все цифры i=0..9 в степень и для каждой определим периодичность t_i последней цифры. Далее, при вводе теста нас интересует только последняя цифра c числа a: найдем остаток от деления b на t_c – это будет номер искомой последней цифры внутри периода.


Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Комментариев нет:

Отправить комментарий