青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

poj3233

Matrix Power Series

Time Limit: 3000MS
Memory Limit: 131072K
Total Submissions: 10211
Accepted: 4333

Description

Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak.

Input

The input contains exactly one test case. The first line of input contains three positive integers n (n ≤ 30), k (k ≤ 109) and m (m < 104). Then follow n lines each containing n nonnegative integers below 32,768, giving A’s elements in row-major order.

Output

Output the elements of S modulo m in the same way as A is given.

Sample Input

2 2 4
0 1
1 1

Sample Output

1 2
2 3
 
題意很簡單不用描述了
網上在推薦這題的時候可能有些誤區
網上說是二分再二分,
其實是這樣的,因為計算a^k可以二分,這是第二個二分
而第一個二分是指的對a^1+a^2+....+a^k可以分成兩半  
k是偶數時候
f[k]=(a^1+a^2+....+a^(k/2))+a^(k/2)*[a^1+a^2+....+a^(k/2)]
即 f[k]=f[k/2]+[a^(k/2)]*f[k/2]
奇數時候 
f[k]=f[k-1]+a^k
以上描述的兩次二分是第一種做法
第二種做法
運用線性代數的
令B= A E
     0 E
那么
B^(k+1)= A^(k+1)  E+A+...A^k
         0        E
 
然后就不用多說了
 
剛開始想出第一種方法,覺著也不難寫 ,
然后wa到死 tle到死
一直超時,那個取模那個如果不取就wa,取了就tle,真心糾結了
然后忍不了了
寫的第二個
不知道為什么還是那么長時間
應該是我寫的代碼質量不好
#include<stdio.h>
#include
<string.h>
#include
<math.h>
#include
<iostream>
#define maxn 35*2
using namespace std;
struct node
{
    __int64 x[maxn][maxn];
    
void init()
    
{
        memset(x,
0,sizeof(x));
    }

    
void init1()
    
{
        memset(x,
0,sizeof(x));
        
for(int i=1; i<maxn; i++)
            x[i][i]
=1;
    }

}
;
node e;
int m,n,k;
void print1(node x)
{
    
for(int i=1; i<=n; i++)
    
{
        
for(int j=1+n; j<=2*n; j++)
        
{
            printf(
"%d",x.x[i][j]);
            
if(j==n*2) printf("\n");
            
else printf(" ");
        }

    }

}

node add1(node x)
{
    node tmp;
    tmp
=x;
    
for(int i=1;i<=n;i++)
    
{
        
for(int j=n+1;j<=2*n;j++)
            tmp.x[i][j]
=(tmp.x[i][j]%m+m)%m;
    }

    
for(int i=1; i<=n; i++
    tmp.x[i][i
+n]=(tmp.x[i][i+n]-1+m)%m;
    
return tmp;
}

node mul(node t1,node t2)
{
    node tmp;
    tmp.init();
    
for(int i=1; i<=2*n; i++)
        
for(int j=1; j<=2*n; j++)
        
{
            tmp.x[i][j]
=0;
            
for(int k=1; k<=2*n; k++)
            
{
                tmp.x[i][j]
=(tmp.x[i][j]+t1.x[i][k]*t2.x[k][j])%m;
            }

        }

    
return tmp;
}

node ap(node a,
int p)
{
    
int tmp;
    node x,ans;
    tmp
=p;
    ans.init1();
    x
=a;
    
while(tmp)
    
{
        
if(tmp%2==1) ans=mul(ans,x);
        tmp
=tmp/2;
        x
=mul(x,x);
    }

    
return ans;
}

int main()
{
    node a,ans,b;
    scanf(
"%d%d%d",&n,&k,&m);
    a.init();
    
for(int i=1; i<=n; i++)
        
for(int j=1; j<=n; j++)
        
{
            scanf(
"%d",&a.x[i][j]);
            a.x[i][j]
=a.x[i][j]%m;
        }

    b
=a;
    
for(int j=1; j<=n; j++)
    
{
        b.x[j][j
+n]=1;
        b.x[j
+n][j+n]=1;
    }

    ans
=ap(b,k+1);
    ans
=add1(ans);
    print1(ans);
    
return 0;
}



那個第一種方法tle,待會去優化下代碼,應該能過



呼,第一種方法終于過了

#include<stdio.h>
#include
<string.h>
#include
<math.h>
#include
<iostream>
#define maxn 35
#define inf 0x7fffffff
using namespace std;
struct node
{
    __int64 x[maxn][maxn];
    
void init()
    {
        memset(x,
0,sizeof(x));
    }
    
void init1()
    {
        memset(x,
0,sizeof(x));
        
for(int i=1; i<maxn; i++)
            x[i][i]
=1;
    }
};
node e;
int m,n,k;
void print(node x)
{
    
for(int i=1; i<=n; i++)
    {
        
for(int j=1; j<=n; j++)
        {
            printf(
"%d",x.x[i][j]);
            
if(j==n) printf("\n");
            
else printf(" ");
        }
    }
}
node add(node t1,node t2)
{
    node tmp;
    
for(int i=1; i<=n; i++)
        
for(int j=1; j<=n; j++)
        {
            tmp.x[i][j]
=(t1.x[i][j]+t2.x[i][j])%m;
        }
    
return tmp;
}
node mul(node t1,node t2)
{
    node tmp;
    tmp.init();
    
for(int i=1; i<=n; i++)
        
for(int j=1; j<=n; j++)
        {
            tmp.x[i][j]
=0;
            
for(int k=1; k<=n; k++)
            {
                tmp.x[i][j]
=(tmp.x[i][j]+t1.x[i][k]*t2.x[k][j]);
                
if(tmp.x[i][j]>=inf)
                {
                    tmp.x[i][j]
=tmp.x[i][j]%m;
                }
            }
            tmp.x[i][j]
=(tmp.x[i][j])%m;
        }
    
return tmp;
}
node ap(node a,
int p)
{
    
int tmp;
    node x,ans;
    tmp
=p;
    ans.init1();
    x
=a;
    
while(tmp)
    {
        
if(tmp%2==1) ans=mul(x,ans);
        tmp
=tmp/2;
        x
=mul(x,x);
    }
    
return ans;
}
node getsum(node x,
int n)
{
    
int k;
    node ans,tmp;
    k
=n;
    
if(k==1return x;
    
if (k%2==0)
    {
        tmp
=getsum(x,k/2);
        ans
=add(tmp,mul(ap(x,k/2),tmp));
    }
    
else
    {
        tmp
=getsum(x,k/2);
        ans
=add(add(tmp,mul(ap(x,k/2),tmp)),ap(x,k));
    }
    
return ans;
}
int main()
{
    node a,ans,b;
    scanf(
"%d%d%d",&n,&k,&m);
    a.init();
    
for(int i=1; i<=n; i++)
        
for(int j=1; j<=n; j++)
        {
            scanf(
"%d",&a.x[i][j]);
            a.x[i][j]
=a.x[i][j]%m;
        }
    ans
=getsum(a,k);
    print(ans);
    
return 0;
}



posted on 2012-07-22 07:02 jh818012 閱讀(109) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿

文章檔案(85)

搜索

最新評論

  • 1.?re: poj1426
  • 我嚓,,輝哥,,居然搜到你的題解了
  • --season
  • 2.?re: poj3083
  • @王私江
    (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
  • --游客
  • 3.?re: poj3414[未登錄]
  • @王私江
    0ms
  • --jh818012
  • 4.?re: poj3414
  • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
  • --王私江
  • 5.?re: poj1426
  • 評論內容較長,點擊標題查看
  • --王私江
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美国产三级| 欧美日韩性生活视频| 国产精品美女久久久浪潮软件| 性欧美在线看片a免费观看| 亚洲欧美日韩成人| 在线欧美日韩| 亚洲无限av看| 亚洲日本乱码在线观看| 一区二区久久久久久| 国内精品久久国产| 亚洲精品综合精品自拍| 国产一区二区无遮挡| 亚洲黄色成人| 国产精品视频yy9099| 免费国产自线拍一欧美视频| 欧美日韩精品免费观看视一区二区| 久久国产免费看| 欧美日韩国产综合视频在线观看| 久久精品视频在线看| 欧美日韩黄视频| 免费欧美在线| 国产亚洲精品激情久久| 夜夜精品视频| 91久久午夜| 久久大综合网| 亚洲欧美网站| 欧美无乱码久久久免费午夜一区| 欧美激情在线观看| 136国产福利精品导航网址应用 | 国产精品v欧美精品∨日韩| 欧美aaaaaaaa牛牛影院| 国产精品一区二区久久国产| 夜夜嗨av一区二区三区四季av | 久久九九免费| 久久国产精品毛片| 国产精品女人久久久久久| 亚洲精品国产精品乱码不99| 亚洲第一中文字幕| 久久久激情视频| 国语自产精品视频在线看| 欧美激情导航| 在线视频成人| 久久一综合视频| 久久亚洲精品一区| 韩国成人理伦片免费播放| 欧美一区二区高清在线观看| 午夜精品福利一区二区蜜股av| 欧美日韩亚洲另类| 99国产精品久久久久老师| 一本综合精品| 欧美午夜精品久久久久久浪潮| 亚洲精品欧美日韩专区| 99在线视频精品| 欧美四级剧情无删版影片| 一区二区欧美在线观看| 亚洲欧美电影在线观看| 国产伦精品一区二区三区视频黑人| 亚洲影院免费| 久久久久.com| 亚洲国产一区在线| 欧美精品久久久久久久久老牛影院| 亚洲国产成人在线播放| 91久久久国产精品| 久久成人国产| 国产日韩在线视频| 小黄鸭精品aⅴ导航网站入口| 国产精品扒开腿做爽爽爽视频 | 国产日韩精品久久久| 亚洲影院色在线观看免费| 久久狠狠久久综合桃花| 在线成人免费视频| 欧美黄色一区二区| 亚洲性视频网站| 久久久亚洲人| 亚洲毛片一区| 国产精品夜夜夜| 玖玖精品视频| 亚洲作爱视频| 久久婷婷国产综合国色天香| 亚洲日本无吗高清不卡| 国产精品久久久久久超碰| 欧美呦呦网站| 亚洲欧洲精品一区二区三区波多野1战4 | 久久精品在线| 亚洲人成网站色ww在线| 欧美性猛交99久久久久99按摩| 欧美一区1区三区3区公司| 亚洲国产精品久久久久秋霞不卡| 亚洲一区中文| 亚洲第一精品影视| 国产精品欧美日韩久久| 老色鬼久久亚洲一区二区| 亚洲午夜久久久| 亚洲国产精品www| 久久国产精彩视频| 亚洲精品日本| 国产综合视频| 国产精品久久久久久亚洲调教| 久久久九九九九| 中日韩视频在线观看| 久久一区精品| 久久精品123| 一区二区三区精密机械公司| 国语自产精品视频在线看一大j8| 欧美日本三级| 麻豆精品传媒视频| 欧美一区激情视频在线观看| 亚洲卡通欧美制服中文| 欧美 日韩 国产精品免费观看| 午夜亚洲一区| 中文av字幕一区| 日韩视频精品| 亚洲激情国产精品| 激情综合电影网| 国产日韩欧美高清| 国产精品日韩久久久久| 欧美日韩免费视频| 欧美二区在线看| 免费视频一区| 米奇777超碰欧美日韩亚洲| 久久国产精品一区二区三区四区 | 日韩性生活视频| 亚洲国产欧美一区二区三区丁香婷| 国产午夜精品一区二区三区视频| 国产精品xxxav免费视频| 欧美国产日韩在线| 免费欧美高清视频| 巨胸喷奶水www久久久免费动漫| 欧美一区二区在线看| 校园激情久久| 欧美在线视频在线播放完整版免费观看| 亚洲网站在线播放| 中文一区字幕| 亚洲一区二区高清| 亚洲亚洲精品在线观看| 一区二区三区精品视频| 一本色道久久加勒比精品| 日韩香蕉视频| 欧美日韩高清在线播放| 欧美在线视频一区| 亚洲一区亚洲| 欧美aⅴ一区二区三区视频| 亚洲欧美日韩精品一区二区 | 国产精品视区| 国产日韩欧美在线| 国产亚洲欧美另类中文| 国产一区二区三区四区老人| 国产精品一区二区三区观看| 国产精品视频第一区| 国产精品私房写真福利视频| 国产精品自在线| 狠狠久久婷婷| 亚洲韩国日本中文字幕| 亚洲精品一区二区三区在线观看 | 久久久亚洲影院你懂的| 美女999久久久精品视频| 欧美韩日亚洲| 欧美国产日韩免费| 欧美1区3d| 国产精品成人va在线观看| 欧美一区二区三区免费视| 美女精品网站| 欧美激情综合色| 国产精品热久久久久夜色精品三区 | 精品动漫一区| 亚洲一区二区三| 中文一区二区| 久久精品国产96久久久香蕉| 麻豆freexxxx性91精品| 亚洲第一在线| aa级大片欧美| 久久国产视频网站| 免费一级欧美片在线观看| 欧美视频三区在线播放| 国产午夜精品久久久久久免费视| 亚洲国产精品久久91精品| 亚洲性感美女99在线| 亚洲无线视频| 一色屋精品视频在线看| 一区二区三区四区国产| 亚洲视频axxx| 久久久综合精品| 亚洲毛片av| 久久精品女人的天堂av| 欧美日韩一区二区欧美激情| 韩日成人在线| 亚洲免费视频成人| 欧美国产日韩在线| 午夜精品一区二区三区在线播放| 蜜桃精品久久久久久久免费影院| 国产精品蜜臀在线观看| 亚洲欧洲精品一区二区精品久久久| 午夜亚洲福利| 亚洲人成人77777线观看| 香蕉久久夜色精品| 欧美视频第二页| 亚洲人体偷拍| 狂野欧美激情性xxxx欧美| 中文欧美日韩| 欧美精品色一区二区三区|