1. 程式人生 > >【模板】(新)快速冪+快速乘

【模板】(新)快速冪+快速乘

老版快速冪

感覺以前寫的這篇太渣了
貼一個新的

inline ll pow(ll a , ll b , ll p){
        ll ans = 1;
        while(b){
                if(b & 1)   ans = (ans*a)%p;
                a = (a*a)%p;
                b >>= 1;
        }
        return ans;
}

還可以演變一個快速乘

inline ll mul(ll a , ll b , ll p){
        ll ans = 0
; while(b){ if(b & 1) ans = (ans + a)%p; a = (a + a)%p; b >>= 1; } return ans; }

相關推薦

模板()快速+快速

老版快速冪 感覺以前寫的這篇太渣了 貼一個新的 inline ll pow(ll a , ll b , ll p){ ll ans = 1; while(b)

Luogu 3373 - 模板線段樹 2 - [加線段樹]

query tro 函數 pac upd its c代碼 int typedef 題目鏈接:https://www.luogu.org/problemnew/show/P3373 題目描述 如題,已知一個數列,你需要進行下面三種操作: 1.將某區間每一個數乘上x 2.將某區

模板快速/快速

快速冪: inline int ksm(int a,int b,int mod) { int ans=1; a%=mod; while(b) { if(b&1) ans=ksc(

P3390 模板矩陣快速

說明 快速冪 給定 元素 答案 利用 class 題目 乘法 題目背景 矩陣快速冪 題目描述 給定n*n的矩陣A,求A^k 輸入輸出格式 輸入格式: 第一行,n,k 第2至n+1行,每行n個數,第i+1行第j個數表示矩陣第i行第j列的元素 輸出格式: 輸出A^

洛谷 P3390 模板矩陣快速

算法 ons int void printf cst getchar show 輸出格式 題目背景 矩陣快速冪 題目描述 給定n*n的矩陣A,求A^k 輸入輸出格式 輸入格式: 第一行,n,k 第2至n+1行,每行n個數,第i+1行第j個數表示矩陣第i行

模板快速取模

模板 space 變量 pac esp const def class cstring 快速冪取模的模板,要註意所有變量都要開成long long類型的防溢出: #include<cstdio> #include<algorithm>

模板矩陣快速

oid -c algorithm adg col emc print cstring -o 題目背景 矩陣快速冪 題目描述 給定n*n的矩陣A,求A^k 輸入輸出格式 輸入格式: 第一行,n,k 第2至n+1行,每行n個數,第i+1行第j個數表示矩陣第i行第j列的元素

luogu3390 模板矩陣快速

tdi ret operator turn clu names his == 等於 #include <iostream> #include <cstdio> using namespace std; typedef long long ll; ll

模板洛谷P3390 模板矩陣快速

i++ pac get lld getchar () lin line its P3390 【模板】矩陣快速冪 題目描述 給定n*n的矩陣A,求A^k 矩陣A的大小為n×m,B的大小為n×k,設C=A×B 則C_{i,j}=\sum\limits_{k=1}^{n}A_{i

模板快速+取余

int pre span spa 快速 模板 col 快速冪 result 1 inline int Power(int a, int n, int b) 2 { 3 int result = 1; 4 while(n) 5 { 6

[luogu P3390] 模板矩陣快速

題目 https://www.luogu.org/problemnew/show/P3390#sub 解題思路 這道題就是矩陣乘法的模板題,注意一下 f

模板快速||取餘運算。

拿一個樣例說話吧: 2^1=2 2%9=2 2^2=4 4%9=4 2^3=8 8%9=8 2^4=16 16%9=7 2^5=32 32%9=5 2^6=64 64%9=1 2^7=128 128%9=2 通過這個你能發現什麼呢? 自然就是餘數都是有規律的。 是不是讓快速冪變得淺顯易懂了。

洛谷 P1939 模板矩陣加速(數列)——————矩陣快速(水題)

P1939 【模板】矩陣加速(數列) 題目描述 a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 求a數列的第n項對1000000007(10^9+7)取餘的值。 輸入輸出格式 輸入格式: 第一行一個整數T,表示詢問個數。

POJ 3696 The Luckiest Number尤拉函式+快速+快速

Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his own lucky number L. Now he wants to constr

洛谷 P1939 模板矩陣加速(數列):優化遞推式的方法——矩陣快速

在大多數情況下,O(n)的效率都是值得驕傲的,然而,有時候並不是,比如如何在一秒鐘內算出一個遞推式的第1e9項,很明顯O(n)不行了。 然而常數級又不太現實,除非你的數學非常好,這題又比較簡單,你推了一個特徵方程的通項公式…… 所以考慮log的做法:矩陣快速冪 如果你還不知

矩陣快速HDU1575Tr A模板

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1575 題目描述: Problem Description A為一個方陣,則Tr A表示A的跡(就是主對角線上各項的和),現要求Tr(A^k)%9973。

LuoguP3390|模板矩陣快速|板子

目錄 快速冪 板子 矩陣快速冪 Problem 板子 快速冪 板子 long long qpow(long long a,long long b){ long long ans=1,base=a; while(b){

模板數論快速快速乘法

快速冪 快速冪取模演算法可以在O(log2b)的時間內求出abmodp的值。 運用了二進位制的思想,實質是對b進行二進位制分解。 程式碼: typedef long long LL; LL ksm(int a,int b,int p)//最好不要把函

快速模板

快速乘:a*a=a+a+a·····+a(a個a相加),O(lgn/lg2)複雜度; 如果a比較大:a=a*a%m   =》   a=(a%m)*(a%m)%m  有可能m比較大,最終爆LL,快速乘能

洛谷P1226 模板快速||取餘運算

題目連結 題目描述 輸入b,p,k的值,求b^p mod k的值。其中b,p,k*k為長整型數。 輸入輸出格式 輸入格式: 三個整數b,p,k. 輸出格式: 輸出“b^p mod k=s” s為運算結果 輸入輸出樣例 輸入樣例#1: 複製