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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2008, 23:38   #11
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Могу предложить такое решение:
Код:
function GetLast (N: Integer): Integer;
// Найти последнюю цифру N!, отличную от 0:
var I, Num, FSimple: Integer;
begin
  FSimple := 1;
  for I := 2 to N do
  begin
    Num := I mod 100;
    if Num > 0 then
    begin
      FSimple := FSimple * Num;
      while FSimple mod 10 = 0 do
        FSimple := FSimple div 10;
      FSimple := FSimple mod 1000;
    end;
  end; {for}
  Result := FSimple mod 10;
end; {func GetLast}
Правильную работу на больших числах гарантировать не могу, т.к. пока не смог доказать, что алгоритм верен. Но проверкой до 124! ошибок не нашёл.

P.S. Я проверял обычным калькулятором в винде. Более, чем 124! он не способен вычислить, сохранив последнюю цифру. Мат пакетов на компе не установлено. Если есть возможность, прогоните на больших значениях.
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача Vitas1234 Паскаль, Turbo Pascal, PascalABC.NET 5 07.07.2008 12:10
Несколько очень легких задачек!проверьте себя!!на разные темы,от нах-я суммы до массивов!!прошу решить,кн ruslan55 Паскаль, Turbo Pascal, PascalABC.NET 3 17.06.2008 12:43
Задача/C++ Stan Помощь студентам 2 24.01.2008 20:33