xmuC語言程式實踐week 1 大作業

2021-09-24 15:52:15 字數 1421 閱讀 8267

演算法提高 矩陣乘方

描述給定乙個矩陣a,乙個非負整數b和乙個正整數m,求a的b次方除m的餘數。

其中乙個nxn的矩陣除m的餘數得到的仍是乙個nxn的矩陣,這個矩陣的每乙個元素是原矩陣對應位置上的數除m的餘數。

要計算這個問題,可以將a連乘b次,每次都對m求餘,但這種方法特別慢,當b較大時無法使用。下面給出一種較快的演算法(用a^b表示a的b次方):

若b=0,則a^b%m=i%m。其中i表示單位矩陣。

若b為偶數,則a^b%m=(a^(b/2)%m)^2%m,即先把a乘b/2次方對m求餘,然後再平方後對m求餘。

若b為奇數,則a^b%m=(a^(b-1)%m)*a%m,即先求a乘b-1次方對m求餘,然後再乘a後對m求餘。

這種方法速度較快,請使用這種方法計算a^b%m,其中a是乙個2x2的矩陣,m不大於10000。

輸入輸入描述:

輸入第一行包含兩個整數b, m,第二行和第三行每行兩個整數,為矩陣a。 

輸入樣例: 

2 21 1

0 1輸出

輸出描述: 

輸出兩行,每行兩個整數,表示a^b%m的值。

輸出樣例: 

1 00 1

輸入樣例 1 

參考上文
輸出樣例 1

參考上文
提示

hint:時間限制:1.0s 記憶體限制:512.0mb

題號1127 

矩陣快速冪板子題~~~

#include#define ll long long

using namespace std;

inline int read()//快讀

while(ch>=48&&ch<=57)

return s*w;

}inline void write(int x)//快寫

struct mat //定義矩陣結構體

;int n,b,m; //n*n方陣 a,求矩陣a^b%m

mat a,e; //a是輸入的矩陣,e是輸出的矩陣

mat mul(mat x,mat y)

}for(int i=1;i<=n;++i)}}

return c;

}mat pow(mat x,int y)

}/* for(int i=1;i<=n;i++) //注釋掉部分可供除錯

return ans;

}int main()

}/* for(int i=1;i<=2;i++)

{for(int j=1;j<=2;j++)

{cout複雜度分析:暴力解法o(n^3*m)->矩陣快速冪o(n^3logm)

矩陣相乘有個o(n^2.7)的聽說

ac截圖,沒辦法,作業要這個

個人作業 Week1

在超大的軟體工程中如何在測試和成本中找到平衡點?軟體工程師在入職後大概擁有多少的學習時間進行自我提公升?如何克服 複審 文件撰寫這類工作的枯燥?專案經理與程式設計師之間的矛盾如何處理,該如何看待這種關係?團隊中技術差距與思路不同如何進行磨合?軟體 software 最早出現在出版物中是由richar...

個人作業 Week1

問題1 程式設計師的優劣是否在軟體開發中已經不重要了?使用者實際關心的 外形,使用的樂趣和效率,自我形象,個人滿足感,回憶,這麼多條中,僅有效率與 有關,而實際上使用者比起效率卻更在意其他這些 么蛾子 qq,支付寶等諸多流行的 功能,複雜度並不高但卻十分成功。3.軟體開發更重要的管理與分工,是否超出...

個人作業 week1

1 問題 1 與軟體學院相比,電腦科學更偏向理論研究,本系開設軟體工程課程的意圖是否是為了平衡理論與應用的比重?2 bug的定義根據開發者與使用者的分析角度不同,有著很大的區別,如何使開發者能夠有效的感受使用者的角度,使軟體更具人性化?3 coder和hacker之間原則性的區別是什麼?4 面對 量...