C語言程式實踐第一周報告 doc版

2021-09-24 20:28:43 字數 1125 閱讀 3852

c語言程式實踐第一周報告

矩陣乘方

一種樸素的思想

對於普通型別的求a^n,我們的求法是a*a*a*a....,這樣乘以n次,時間複雜度為o(n),對於普通n比較小的我們可以接受,然而當n比較大的時候,計算就慢了,所以我們就去尋找更快捷的計算方法,學過快速冪的同學應該不難想到矩陣的快速冪

例如:我們要求2^8,我們通過當為偶數的時候,a^n=(a*a)^(n/2),當n為奇數時,a^n=a*(a*a)^(n/2)的形式,是不是可以轉化為4^4->8^2->64^1,就可以了,2^5的話2*4^2->2*16^1。(把冪化為底數,減少乘法的次數)

其實類似這樣的思想不少見,我們不應該感到陌生:

例如著名的秦九昭演算法(扯遠了,但還是要說一下)

背景:

你怎麼算呢?暴力乘,好我們來分析一下時間複雜性的問題,你需要加法運算n次,乘法運算1+2+....+n=n*(n+1)/2次,但我們有乙個很簡單的優化:秦九昭演算法

我們只需要n次乘法運算,n次加法運算就可實現多項式求值時間複雜度為o(n)

其實本質是什麼呢?

本質是利用已有的資料,就比如說我已經有了x,我去算x^2就不用兩次運算,直接在原有的基礎上再乘乙個x,其實很多別的演算法也是基於這個大思想,例如記憶化搜尋,字首和,差分,線段樹懶標記

說回正題,基於這樣的思想

矩陣快速冪板子應運而生

mat pow(mat x,int  y)

}while(y)   //矩陣快速冪模板

x = mul(x,x);

y>>=1;

}return ans;

}唯一要注意的就是奇數和偶數的差別:奇數多乘一次,偶數則不用

之前程式沒過的原因:

第一次:沒看題目要求n,b,m按順序輸入

第二次:快速冪最後返回的是ans矩陣而不是x矩陣

python週報第一周

首次寫部落格,勿噴!以後無特殊宣告都是在python3.5下操作。1.python2和python3最基礎的差異 python2和python3在新手看來最大的差別無異乎是print了,我分別演示下 haha print a haha 總結 python3只支援print python2都支援。總結...

第一周週報

本週了解了一些html元素,以及一些css裡面簡單的標籤 盒子的組成 常規流 浮動和一些基本的知識 定位看了,但還不會運用 1.網頁基本結構 en 2.學習了一些html元素標籤作用 h系列元素 h1 h6,標題文字,重要性遞減 p標籤表示乙個段落 img標籤 插入乙個 a標籤鏈結標籤,可直接跳轉至...

寒假第一周學習週報

這一周根據實驗室的要求,主要完成了學生管理系統的搭建,不同於以往這次選擇搭建乙個 英文電子詞典管理系統 主要功能如下,並且同時附帶上 為了方便起見,我將所有功能整合在一起 如下 void dealaction int action else if action 2 else if action 3 ...