• poj3233


    这道题其实算是把快速幂的思想用在多项式之中

    A+A^2+A^3+…+A^n=(A+A^1…+A^[n/2])+A^[n/2](A+A+A^1…+A^[n/2])+n mod 2*A^n

    然后就是打码的问题了

     1 var ans,a,b,c,f:array[0..30,0..30] of longint;
     2     d:array[0..30] of longint;
     3     i,j,n,m,p:longint;
     4 
     5 procedure mul;
     6   var i,j,k:longint;
     7   begin
     8     for i:=1 to n do
     9       for j:=1 to n do
    10       begin
    11         c[i,j]:=0;
    12         for k:=1 to n do
    13           c[i,j]:=(c[i,j]+a[i,k]*b[k,j] mod p) mod p;
    14       end;
    15   end;
    16 
    17 procedure add;
    18   var i,j:longint;
    19   begin
    20     for i:=1 to n do
    21       for j:=1 to n do
    22         ans[i,j]:=(ans[i,j]+c[i,j]) mod p;
    23   end;
    24 
    25 procedure quick(x:longint);
    26   var i,j:longint;
    27   begin
    28     j:=0;
    29     while x<>0 do
    30     begin
    31       inc(j);
    32       d[j]:=x mod 2;
    33       x:=x shr 1;
    34     end;
    35     fillchar(c,sizeof(c),0);
    36     for i:=1 to n do
    37       c[i,i]:=1;
    38     for i:=j downto 1 do
    39     begin
    40       a:=c;
    41       b:=c;
    42       mul;
    43       if d[i]=1 then
    44       begin
    45         a:=c;
    46         b:=f;
    47         mul;
    48       end;
    49     end;
    50   end;
    51 
    52 procedure work(x:longint);
    53   begin
    54     if x=1 then ans:=f
    55     else begin
    56       work(x shr 1);
    57       quick(x shr 1);
    58       a:=c;
    59       b:=ans;
    60       mul;
    61       add;
    62       if x mod 2=1 then
    63       begin
    64         quick(x);
    65         add;
    66       end;
    67     end;
    68   end;
    69 
    70 begin
    71   readln(n,m,p);
    72   for i:=1 to n do
    73     for j:=1 to n do
    74       read(f[i,j]);
    75   work(m);
    76   for i:=1 to n do
    77   begin
    78     for j:=1 to n do
    79     begin
    80       write(ans[i,j]);
    81       if j<>n then write(' ');
    82     end;
    83     writeln;
    84   end;
    85 end.
    View Code
  • 相关阅读:
    关于OCI接口理解
    linux 关闭selinux
    Web 浏览器之事件循环 Event Loop
    Web 浏览器之页面展示原理
    Web 前端工程化(Node、Babel、webpack、Vue、Nginx)
    Web 包管理工具(npm、yarn、cnpm、pnpm)
    kmeans算法
    Django_re_path_使用正则匹配url
    VMware_关机未关闭vm导致显示红叉的处理方法
    Django_发送邮件
  • 原文地址:https://www.cnblogs.com/phile/p/4473047.html
Copyright © 2020-2023  润新知