Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
starmaster
Помогите, пожалуйста, решить вот такую задачу: Даны целые числа n и k. Найти младшую цифру числа n в степени k (число n в степени k может и не вмещаться в числовую переменную).
xds
Код
program n_k;

var
 n, k, r: Integer;

begin
 Write('n>');
 Readln(n);
 Write('k>');
 Readln(k);
 r := 1;
 while k > 0 do
   begin
     r := LongInt(r) * n mod 10;
     Dec(k);
   end;
 Write('Младшая цифра: ', r);
end.
volvo
starmaster
Ну, для того, чтобы узнать только последнюю (младшую) цифру результата, не обязательно возводить в степень k все число n. Достаточно возвести "n mod 10" в степень k (то есть последнюю цифру n). Ну а дальше все просто:
N^(Р*K) = (N^K)^Р, то есть достаточно показатель степени (К) разложить на простые множители, и каждый раз последнюю цифру результата возводить в требуемую степень...

Пример:
Найти последнюю цифру 4^24...
24 = 2*2*2*3 => 4^24 = (4^2)^2^2^3
4^2 = 16 ; берем последнюю цифру (6)
6^2 = 36 ; (6)
6^2 = 36 ; (6)
6^3 = 216; (6)
то есть последняя цифра 4^24 должна быть равна 6...
Проверяем: 4^24 = 281474976710656

Я думаю, проблем с реализацией не возникнет... ;)

xds sad.gif Уже всё решили....
starmaster
Конечно спасибо большое! Предыдущее условие мне нужно было для задачки, которую я изложу ниже. Я и сам смогу решить, просто объясните, пожалуйста, условие:

Дано число N, в котором не менее 2 цифр. Найти разность числа, составленного из 2-х старших цифр и числа, составленного из 2-х младших цифр.
Вход
В первой строке входа дано число N (целое число)
Выход
В первую строку выхода вывести результат
Пример
Вход:

693
Выход:

-24
volvo
starmaster
Объясните, пожалуйста 2 момента:

1. Неясно каким образом эта задача связана с вышеописанной.
2. (6 - 94) никак не равно (-24). Мало того, с этими цифрами вообще нельзя получить (-24) в любой перестановке.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.