Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

。。。算是我的思考吧

Posted by wukewen at 2013-12-09 23:46:57 on Problem 3233
首先构造的矩阵1  A
              0  A
所以平方之后就是1 A+A*A
                0 A*A
再推一下发现这个矩阵k次方后右上角的就是答案
令a=右上角,b=右下角,由于左半边一直为1 0
所以每次平方运算结果(方式)为 a=a+a*b b=b*b

设结果矩阵为1 c
            0 d
至于二进制下的k的某一位如果是1,则类似的:c=c+a*d d=b*d
                       如果是0,则不需与结果矩阵相乘
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
表达不清,下面代码
var
  a,b,c,d,e:array[0..40,0..40] of int64;
  n,m,k,i,j,kk:longint;
begin
  readln(n,m,kk);
  for i:=1 to n do
    for j:=1 to n do
      begin
      read(a[i,j]);
      b[i,j]:=a[i,j];
      end;
  fillchar(c,sizeof(c),0);
  fillchar(d,sizeof(d),0);
  for i:=1 to n do
    d[i,i]:=1;
  while m>0 do
    begin
    if m and 1=1 then
       begin
       fillchar(e,sizeof(e),0);
       for i:=1 to n do
         for j:=1 to n do
           for k:=1 to n do
             inc(e[i,j],a[i,k]*d[k,j] mod kk);
       for i:=1 to n do
         for j:=1 to n do
           c[i,j]:=(c[i,j]+e[i,j]) mod kk;
       fillchar(e,sizeof(e),0);
       for i:=1 to n do
         for j:=1 to n do
           for k:=1 to n do
             inc(e[i,j],b[i,k]*d[k,j] mod kk);
       for i:=1 to n do
         for j:=1 to n do
           d[i,j]:=e[i,j];
       end;
    fillchar(e,sizeof(e),0);
    for i:=1 to n do
      for j:=1 to n do
        for k:=1 to n do
          inc(e[i,j],a[i,k]*b[k,j] mod kk);
    for i:=1 to n do
      for j:=1 to n do
        a[i,j]:=(a[i,j]+e[i,j]) mod kk;
    fillchar(e,sizeof(e),0);
    for i:=1 to n do
      for j:=1 to n do
        for k:=1 to n do
          inc(e[i,j],b[i,k]*b[k,j] mod kk);
    for i:=1 to n do
      for j:=1 to n do
        b[i,j]:=e[i,j];
    m:=m shr 1;
    end;
  for i:=1 to n do
    begin
    write(c[i,1]);
    for j:=2 to n do
      write(' ',c[i,j]);
    writeln;
    end;
end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator