1. 程式人生 > >快速冪的模板 (數論)

快速冪的模板 (數論)

#include<bits/stdc++.h>
using namespace std;
long long quickmod(long long a,long long b,long long m)
{
    long long ans = 1;
    while(b)//用一個迴圈從右到左便利b的所有二進位制位
    {
        if(b&1)//判斷此時b[i]的二進位制位是否為1
        {
            ans = (ans*a)%m;//乘到結果上,這裡a是a^(2^i)%m
        }
        b/=2;
        a = a*a%m;
    }
    return ans;
}
int main()
{
    long long  a,b,m;
    while(~scanf("%lld%lld%lld",&a,&b,&m))
    {

        printf("%d\n",quickmod(a,b,m));
    }
}

相關推薦

快速模板java

知道快速冪首先要知道(a * b)%c=(a%c)*(b%c) 還要知道 a^b= a^(2 *b/2)=a^2的b/2次方 當換成int型別需要考慮奇偶型做不同處理 那麼冪分為奇偶數考慮 b%2=0

快速模板 數論

#include<bits/stdc++.h> using namespace std; long long quickmod(long long a,long long b,long long m) { long long ans = 1; w

51nod 1113 矩陣連乘快速模板 對100000007取模

#include<cstdio> #include<cmath> #include<algorithm> #define ll long long #define M 1000000007 using namespace std; c

矩陣快速專題

最近閒來無事,準備集中精力刷一波數論與圖論。矩陣快速冪是數論裡面的重要組成部分,值得我好好學習一下。因為題目比較多,分析也比較多,所以將此專題分成幾個部分。做完這一專題,可能會暫時轉向圖論部分,然後等我組合數學學得差不多了,再回過頭來繼續做數論題。 矩陣快速冪演算法的核

快速演算法hdu Rightmost Digit

快速冪演算法,顧名思義,就是進行冪運算,http://acm.hdu.edu.cn/showproblem.php?pid=1061 這是hdu經典的一道題,如果我在接下來的解析中寫的不好,也請大家指點。 hdu這道題,他要求我們算出每個正整數的個位數,

HDU 1575 Tr A矩陣快速模板

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

POJ3070 Fibonacci矩陣快速加速遞推模板題】

題目連結:傳送門 題目大意:   求斐波那契數列第n項F(n)。   (F(0) = 0, F(1) = 1, 0 ≤ n ≤ 109) 思路:   用矩陣乘法加速遞推。 演算法競賽進階指南的模板: #include <iostream> #include &l

HDU-1575-Tr A矩陣快速模板

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

杭電1575矩陣快速模板

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

poj 3070 Fibonacci矩陣快速模板,斐波那契

Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12812 Accepted: 9109 Description In the Fibonacci integer s

Tr A - 杭電1575矩陣快速模板

題目連結: Tr A-杭電1575 Problem Description A 為一個方陣,則 Tr A 表示 A 的跡(就是主對角線上各項的和),現要求Tr(A^k)%9973。   Input 資料的第一行是一個 T,表示有 T 組資料

字串hash補充快速模板

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

HDU1575矩陣快速模板

簡單的矩陣快速冪,輸入矩陣直接套模板做就行了。 code #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm>

斐波那契數列的第N項矩陣快速模板

 收藏  關注 斐波那契數列的定義如下: 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, 23

poj 3070 Fibonacci矩陣快速求Fibonacci數列

代碼 include cnblogs inf stream exp class set names 題目鏈接: http://poj.org/problem?id=3070 題意: 我們知道斐波那契數列0 1 1 2 3 5 8 13…… 數列中的第i位為第i-1位

快速+分治洛谷P1045 麥森數 noip2003

高精 進制 素數 str c++ efi ref == com 形如的素數稱為麥森數,這時一定也是個素數。但反過來不一定,即如果是個素數,不一定也是素數。到1998年底,人們已找到了37個麥森數。最大的一個是,它有909526位。麥森數有許多重要應用,它與完全數密切相關

BZOJ 3992: [SDOI2015]序列統計 快速+NTT離散對數下

不同 led gre lan cnblogs 至少 inf tro 程序編寫 3992: [SDOI2015]序列統計 Description 小C有一個集合S,裏面的元素都是小於M的非負整數。他用程序編寫了一個數列生成器,可以生成一個長度為N的數列,數列中

ABP+Zero+Metronic+Redis的完美結合快速啟動模板超級代碼詳細註釋版本

詳細 啟動 gpo bubuko abp 掃一掃 com 註釋 快速 微信掃一掃並支付成功,聯系QQ:770628656獲取所有源碼(超級代碼詳細註釋版本) ABP+Zero+Metronic+Redis的完美結合快速啟動模板(超級代碼詳細註

hihoCoder#1743:K-偏差排列矩陣快速+狀壓dp

unit register 狀態 long struct CP def com 不同的 題意: 如果一個 \(1\to N\) 的排列 \(P=[P_1, P_2, ... P_N]\) 中的任意元素 \(P_i\) 都滿足 \(|P_i-i| ≤ K\) ,我們就稱

【BZOJ1898】[ZJOI2005]沼澤鱷魚矩陣快速,動態規劃

表示 ear 構建 esp ++ 方案 set 沒有 ring 【BZOJ1898】[ZJOI2005]沼澤鱷魚(矩陣快速冪,動態規劃) 題面 BZOJ 洛谷 題解 先吐槽,說好了的鱷魚呢,題面裏面全是食人魚 看到數據範圍一眼想到矩乘。 先不考慮食人魚的問題,直接設\(f[