1. 程式人生 > >蒙哥馬利演算法(快速冪模)

蒙哥馬利演算法(快速冪模)

int get_mod(int a, int b, int c)
{
    long long res = 1;//宣告為long long型別防止資料溢位
    while(b > 0)
    {
        if( b & 1)//取冪指數二進位制最後一位
        {
            res = (res * a) % c;
        }
        a = (a * a) % c;
        b >>=1;//冪指數二進位制向右移動一位
    }
    return static_cast<int> (res);//以int型別返回最終結果
}//可能得到負數,最後結果加上模再取一下模

相關推薦

演算法快速

int get_mod(int a, int b, int c) { long long res = 1;//宣告為long long型別防止資料溢位 while(b > 0)

小定理 素性判斷 演算法

轉載於http://blog.csdn.net/arvonzhang/article/details/8564836 1.約定 x%y為x取模y,即x除以y所得的餘數,當x<y時,x%y=x,所有取模的運算對象都為整數。 x^y表示x的y次方。

演算法詳解

這篇文章為大家梳理一下整個蒙哥馬利演算法的本質,蒙哥馬利演算法並不是一個獨立的演算法,而是三個相互獨立又相互聯絡的演算法集合,其中包括 蒙哥馬利乘模,是用來計算x⋅y(modN) 蒙哥馬利約減,是用來計算t⋅ρ−1(modN) 蒙哥馬利冪模,是用

【洛谷1965】轉圈遊戲 快速演算法

轉圈遊戲 題目描述 n 個小夥伴(編號從 0到 n-1)圍坐一圈玩遊戲。按照順時針方向給 n個位置編號,從0 到 n-1。最初,第 0號小夥伴在第 0 號位置,第 1 號小夥伴在第 1號位置

次方求快速問題

快速冪問題(求a^b) 我們都知道當指數為偶數的時候,對於a**b,可以變為(a**2)**(b/2)。 而當指數為奇數的時候,對於a**b,可以化簡為a*(a**(b-1)),然後即可以化簡為a*((a**2)**((b-1)/2)) 如此我們便可知道 如果b

Codeforces-161-E快速

Codeforces 161E-Tetrahedron 本篇文章部分參考於 題目原址 題意 一個正四面體頂點為A,B,C,D,從D出發,每走一步,更變當前所在頂點(不能保持不變),給定一個數 n ,求能有幾種不同路徑使得第 n 步走到 D。 題解 方法一(

hdu 2035 人見人愛A^B快速入門

人見人愛A^B                                      Time Limit: 2000/1000 MS (Java/Others)    Memory Limit

字串hash補充快速模板

題目: 字串的雜湊就是通過某些對映關係,將字串對映到數字上去方便進行比較。 比如二進位制數110110,我們知道這個數的十進位制是 54 基於同樣思路,我們可以定義這樣的一個雜湊函式: 雜湊函式

演算法提高快速快速演算法詳解

問題描述   給定A, B, P,求(A^B) mod P。 輸入格式   輸入共一行。   第一行有三個數,N, M, P。 輸出格式   輸出共一行,表示所求。 樣例輸入 2 5 3 樣例輸出 2 資料規模和約定   共10組資料   對100%的資料,A, B為lon

HDOJ 題目4704 Sum小定理,快速

Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Subm

M斐波那契數列 小定理 + 二分快速 + 矩陣快速

M斐波那契數列F[n]是一種整數數列,它的定義如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 現在給出a, b, n,你能求出F[n]的值嗎? Input 輸入包含多組測試

HDU 4549 M斐波那契數列矩陣快速3+費小定理

C - M斐波那契數列 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB    

hdu 4549 M斐波那契數列小定理+矩陣快速

F(n)=a^F(n-1)*b^F(n-2)%mod 因為a和b都與mod互素,因此用費馬小定理可以得到 F(n)=a^(f(n-1)%mod-1)*b^(f(n)%mod-1) %mod

Teams UVA - 11609快速板題

stdin 排列 map ace for () ffffff pri str 寫的話就是排列組合。。。但能化簡。。。ΣC(n,i)*C(i,1) 化簡為n*2^(n-1) ; #include <iostream> #include <cstdio>

POJ 1995快速

scan argc pre printf pac code i++ stack ack 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #includ

演算法筆記-快速

快速冪就是快速的求底數的整數次方,比起樸素的方法O(n)的時間複雜度,其時間複雜度是O(log2n)。這是很不錯的一個效率提升。 通常要求一個數X的Y次方,記做X^Y,樸素的計算方法是把X乘Y次得到這個結果。 而快速冪計算的過程是,對於指數Y進行奇偶性的判斷。為了方便解釋,

HDU 1575 Tr A矩陣快速模板

Problem Description A為一個方陣,則Tr A表示A的跡(就是主對角線上各項的和),現要求Tr(A^k)%9973。     Input 資料的第一行是一個T,表示有T組資料。 每組資料的第一行有n(2 <= n &

51Nod - 1242 斐波那契快速

斐波那契數列的定義如下:   F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2)   (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 2

HDU 1852 Beijing 2008快速+取

Problem Description As we all know, the next Olympic Games will be held in Beijing in 2008. So the year 2008 seems a little specia

T^T問題求個位數快速||位運算||找規律

原始碼培訓: 今日水題 描述 T^T這個很像一個流淚的表情是不是!其實,它是T的T次方啦~。 當T比較大的時候T^T會非常大,現在只要你求這個數的個位就可以啦! 輸入 輸入包括多組測試資料,每個測試資料只有一個數字 解題思路(一) 看到只取個位數,第一反應找規