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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2011, 16:02   #1
Jumbo
Новичок
Джуниор
 
Регистрация: 26.03.2011
Сообщений: 2
По умолчанию Возведение матрицы в степень

Написал прогу, возводящую квадратную матрицу N*N в степень K и ответ по модулю S (1<=N<=100,1<=K<=10^9,1<=s<=1000). Но выдаёт неправильный ответ на 4 тесте. Забивал разные матрицы, возводил в первую степень, возводил матрицу из одного элемента - везде ответы сходились.
Код:
program power;

{$APPTYPE CONSOLE}

uses
  SysUtils;
type mas=array[1..100,1..100] of int64;
var t,res:mas;  f,f1:text; k,n,s,i,j:integer;

function mul(a,b:mas):mas;{перемножение матриц}
var i,j,d:integer; c:mas;
begin
 for i:=1 to n do
  for j:=1 to n do begin
   c[i,j]:=0;
   for d:=1 to n do
    c[i,j]:=(c[i,j]+ a[i,d]*b[d,j]) mod s ;
  end;

 mul:=c;
end;

procedure power_m(k: integer);{возведение матрицы t в степень k}
var i:integer;
begin
  for i:=1 to n do res[i,i]:=1;

  while (k > 0) do begin

    if (k and 1 = 1) then
      res := mul(res,t);
    if k<>1 then t := mul(t,t);
    k := k shr 1;

  end;

end;

begin
 reset(f,'power.in');
 rewrite(f1,'power.out');
 readln(f,n,k,s);

 for i:=1 to n do begin
  for j:=1 to n do read(f,t[i,j]);
  readln(f);
 end;
 close(f); {считан массив}

 power_m(k);

 for i:=1 to n do begin
  for j:=1 to n do write(f1,res[i,j] mod s,' ');
  writeln(f1);
 end;
 close(f1);
end.
Jumbo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возведение в степень XYLIGANXYL Общие вопросы по Java, Java SE, Kotlin 7 17.09.2016 15:20
Возведение в степень. Drakulov Свободное общение 30 01.03.2011 16:35
возведение матрицы в степень Kanzann Паскаль, Turbo Pascal, PascalABC.NET 0 27.04.2010 19:08
возведение в степень ILNARM Паскаль, Turbo Pascal, PascalABC.NET 16 16.10.2009 23:04
Возведение в степень... Sota Общие вопросы C/C++ 7 18.07.2007 17:05