Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2015, 23:29   #1
otchet200
Новичок
Джуниор
 
Регистрация: 13.02.2015
Сообщений: 2
По умолчанию Определить последнии две цифры числа

Уважаемые, пожалуйста, укажите путь решение данной задачи:
Формула: n^((n-1)^((n-2)^(n-3))...) и так далее пока n-k не будет равно 1, т.е каждая следующая степень возводится в другую, значение которой на 1 меньше предыдущей.
Пользователь вводит значение n.
Необходимо узнать последнии две цифры этого монстра.

Как я понимаю нет никакого смысла возводить всё в степени - получится огромное число, из которого потом будет невозможно достать две последнии цифры.
Ломаю голову, не могу найти последовательность.

Any ideas?
Заранее спасибо!
otchet200 вне форума Ответить с цитированием
Старый 13.02.2015, 23:35   #2
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Цитата:
Как я понимаю нет никакого смысла возводить всё в степени
Вообще не вариант. Даже с малыми числами ты выйдешь за все мыслимые диапазоны (int32, int64). Думаю, тут надо писать свою математику, в основе которой будет идея отбрасывания передней части множимого числа. Нам ведь важна только оканцовка.
WinCoder вне форума Ответить с цитированием
Старый 13.02.2015, 23:38   #3
otchet200
Новичок
Джуниор
 
Регистрация: 13.02.2015
Сообщений: 2
По умолчанию

Цитата:
Сообщение от WinCoder Посмотреть сообщение
Вообще не вариант. Даже с малыми числами ты выйдешь за все мыслимые диапазоны (int32, int64). Думаю, тут надо писать свою математику, в основе которой будет идея отбрасывания передней части множимого числа. Нам ведь важна только оканцовка.
Огромное спасибо! Об этом даже и не думал!
otchet200 вне форума Ответить с цитированием
Старый 13.02.2015, 23:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Рекурсией:
Код:
Function Anyideas(k,n,i:integer):integer;
begin
 if n-k<>1 then Anyideas:=exp(Anyideas(k,n,i+1)*ln(n))
 else Result:=0;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.02.2015, 01:18   #5
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Для вычисления выражения можно предложить "быстрое возведение в степень".
И обрабатывать не полное число, а только 2 последние цифры - так даже за разрядность word не выдешь.
Код:
  {(a^n) mod m}
  function FastPowerMod(a, n, m: word): word;
  var
    res: word;
  begin
    a := a mod m;
....................................
    FastPowerMod := res;
  end;

var
  res: word;
  n: word;
  i: word;
begin
  n := 7;
  res := n;
  for i := n - 1 downto 1 do
    res := FastPowerMod(res, i, 100);
  writeln(n, '->', res);
end.

Последний раз редактировалось FPaul; 14.02.2015 в 08:40.
FPaul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для натурального числа N определить сколько раз его цифры образуют последовательность 10. vikyxa Помощь студентам 0 25.09.2013 16:42
Определить произведение разности первых двух цифр трехзначного числа и младшей цифры этого числа. Hoginat Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 22:13
С++ Выяснить, есть ли в записи натурального числа N две одинаковые цифры. Anya She Помощь студентам 4 21.12.2012 16:04
найти все четырехзначные числа, в которых ровно две одинаковые цифры (турбо паскаль) SkuLLL Помощь студентам 5 23.01.2012 19:23
Натуральное число - Определить, образуют ли все цифры числа возрастающую последовательность Sasha2011 Паскаль, Turbo Pascal, PascalABC.NET 1 18.10.2011 09:25