помогите, пожалуйста, написать программу в Паскале

Приложения:

BobbyFresnel: А значит, надо привлекать модулярную арифметику. Но не понимаю, зачем такие вузовские понятия пихать в школьные олимпиады.
BobbyFresnel: А какое у Вас решение?
BobbyFresnel: Допустим, для n =1234556789012345 и m = 987654321
Carina11111: https://olymp.hse.ru/mmo/tasks-it
BobbyFresnel: И как Вы эту фразу понимаете? "Если же n < m то достаточно промоделировать процесс, беря остаток от деления на m при каждом умножении на следующее число."
BobbyFresnel: Вот в примере n =3 для m=7 дает 6, для m=6 дает 0. И что?
BobbyFresnel: Проблема не в программе, проблема в по-дурацки сформулированной фразе предлагаемого решения.
BobbyFresnel: Смотрел в Интернет про вычисление факториала по модулю. Везде пишется, что при больших n и m нахождение результата за приемлемое время совершенно нетривиальная задача.
BobbyFresnel: Ага... смысл понял. на каждом шаге делить на результат предудущего по модулю, просто чтобы число не было слишком большим.
BobbyFresnel: Но на деле PascalABС.NET позволяет просто использовать целочисленную арифметику с произвольным число цифр. Но жо выяснить для 10^6, как быстрее.

Ответы

Ответ дал: BobbyFresnel
1

===== PascalABC.NET =====

begin

 var a := ReadArrInteger(6);

 for var i := 0 to 2 do

 begin

   var n := a[2 * i];

   var m := a[2 * i + 1];

   if m <= n then

     Println(0)

   else

   begin

     var p := 1;

     for var j := 2 to n do

       p := p * j mod m;

     Println(p)

   end

 end

end.

Вас заинтересует