快速冪深入了解,以及加法,減法,乘法取餘的證明

2021-09-13 17:30:24 字數 844 閱讀 4656

題外話:昨天看李煜東老師寫的演算法競賽高階指南中說**一門學問有三個層次:求其解,知其原因,究其思維之本。通俗地講,就是」怎麼做「,」為什麼是對的「,」怎麼做才能想到這麼去做「。

快速冪的深入了解:如果要用最直接的方法去求

int pow(int x,int n)

return res;

}

最後快速冪是怎麼回事呢?快速冪不就是這個遞迴變成了遞推麼,可以將n變為二進位制看看,然後根據大多數網上那種拆進製的講解,傳送門

接著看加法取餘的證明:

(a+b)%m=(a%m+b%m)%m

證明:設a=a1*m+ar,b=b1*m+br,然後a+b=a1*m+b1*m+ar+br,接著(a+b)%m=(a1*m+b1*m+ar+br)%m=(ar+br)%m=(a%m+b%m)%m

減法取餘的證明:

(a-b)%m = (a%m-b%m+m)%m

證明:設a=a1*m+ar,b=b1*m+br,然後a-b=a1*m-b1*m+ar-br,因為害怕ar-br可能是負數,所以可以將前面a1*m-b1*m借乙個m出來,變為a-b=a1*m-b1*m+ar-br=(a1-b1-1)*m+(ar-br+m),接著(a-b)%m=((a1-b1-1)*m+(ar-br+m))%m=(ar-br+m)%m=(a%m-b%m+m)%m

乘法取餘的證明:

證明:設a=a1*m+ar,b=b1*m+br,然後a*b=a1*b1*m^2+a1*br*m+b1*ar*m+ar*br=(a1*b1*m+a1*br+b1*ar)*m+ar*br,接著(a*b)%m=((a1*b1*m+a1*br+b1*ar)*m+ar*br)%m=(ar*br)%m=(a%m*b%m)%m

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...

深入了解Dojo Data

譯自http www.sitepen.com blog 2010 10 13 dive into dojo data 使用dojo data有助於快速建立web應用的介面,且易於嵌入各種資料來源。它在使用者介面與底層資料之間提供了一層抽象層,使得使用者介面開發人員能夠專注於ui的開發,而無需擔心資料...