快速乘【模板】
快速乘:a*a=a+a+a·····+a(a個a相加),O(lgn/lg2)複雜度;
如果a比較大:a=a*a%m =》 a=(a%m)*(a%m)%m 有可能m比較大,最終爆LL,快速乘能夠解決;
#include<cstdio> typedef long long LL; LL f(LL a,LL b,LL c) { LL k=0; while(b) { if(b&1) k=(k+a)%c; a=(a+a)%c; b>>=1; } return k; } int main() { LL a,b,c; while(scanf("%lld %lld %lld",&a,&b,&c)!=EOF) { a%=c; b%=c; printf("%lld\n",f(a,b,c)); } return 0; }
相關推薦
快速乘【模板】
快速乘:a*a=a+a+a·····+a(a個a相加),O(lgn/lg2)複雜度; 如果a比較大:a=a*a%m =》 a=(a%m)*(a%m)%m 有可能m比較大,最終爆LL,快速乘能
【模板】快速冪/快速乘
快速冪: inline int ksm(int a,int b,int mod) { int ans=1; a%=mod; while(b) { if(b&1) ans=ksc(
【模板】(新)快速冪+快速乘
老版快速冪 感覺以前寫的這篇太渣了 貼一個新的 inline ll pow(ll a , ll b , ll p){ ll ans = 1; while(b)
P3373 【模板】線段樹 2 區間求和 區間乘 區間加
std 數列 cst printf int img ostream string uil 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.將某區間每一個數乘上x 3.求出某區間每一個數的和 輸入輸出格式 輸入格
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>
【luogu 1177】【模板】快速排序
sin 之一 快速排序 包含 names space 整數 -- 說明 題目描述 利用快速排序算法將讀入的N個數從小到大排序後輸出。 快速排序是信息學競賽的必備算法之一。對於快速排序不是很了解的同學可以自行上網查詢相關資料,掌握後獨立完成。(C++選手請不要試圖使用ST
洛谷 P1177 【模板】快速排序 【快速排序/multiset排序】
無法 進行 遞歸 技術 region radi pac 遍歷 換行 題目描述 利用快速排序算法將讀入的N個數從小到大排序後輸出。 快速排序是信息學競賽的必備算法之一。對於快速排序不是很了解的同學可以自行上網查詢相關資料,掌握後獨立完成。(C++選手請不要試圖使用STL,
【模板】矩陣快速冪
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列的元素
洛谷——P1177 【模板】快速排序
排序 資料 radius 同學 n) 信息學 tchar mes 輸出格式 P1177 【模板】快速排序、 題目描述 利用快速排序算法將讀入的N個數從小到大排序後輸出。 快速排序是信息學競賽的必備算法之一。對於快速排序不是很了解的同學可以自行上網查詢相關資料,掌握後獨
luogu3390 【模板】矩陣快速冪
tdi ret operator turn clu names his == 等於 #include <iostream> #include <cstdio> using namespace std; typedef long long ll; ll
[Luogu 1919]【模板】A*B Problem升級版(FFT快速傅裏葉)
vector sample lex cstring 模板 rip putc -s and Description 給出兩個n位10進制整數x和y,你需要計算x*y。 Input 第一行一個正整數n。 第二行描述一個位數為n的正整數x。 第三行描述一個位數為n的正整數y
洛谷P1919 【模板】A*B Problem升級版(FFT快速傅裏葉)
題目 計算 printf n) freopen sam 升級 double 輸入輸出格式 題目描述 給出兩個n位10進制整數x和y,你需要計算x*y。 輸入輸出格式 輸入格式: 第一行一個正整數n。 第二行描述一個位數為n的正整數x。 第三行描述一個位數為n的
【模板】快速傅裏葉變換
wap body problem rev pan pos bit urn 傅裏葉變換 uoj34 1 #include<bits/stdc++.h> 2 #define db double 3 using namespace std; 4 const
luogu P1919 【模板】A*B Problem升級版(FFT快速傅裏葉)
type -i OS source a* ++ urn CP AS 模板 嗯 做多項式乘法,進位 沒了 #include<cmath> #include<cstdio> #include<cstring> #include<a
【模板】快速排序(luogu 1177)
i++ 中間 print 傳送門 http pac https tps nbsp 測評傳送門 真正意義上學會快排,以前一直調的sort…… 但畢竟能手寫就手寫,對自己也是一種鍛煉 解析: 快排說白了就是把要排的一行數切成一半,記錄下中間值,在左半部分找到比中間值大的(記d1
Luogu 3373 - 【模板】線段樹 2 - [加乘線段樹]
query tro 函數 pac upd its c代碼 int typedef 題目鏈接:https://www.luogu.org/problemnew/show/P3373 題目描述 如題,已知一個數列,你需要進行下面三種操作: 1.將某區間每一個數乘上x 2.將某區
模板【洛谷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
【題解】【模板】快速排序
luogu P1177 【模板】快速排序 題目描述 利用快速排序演算法將讀入的NN個數從小到大排序後輸出。 快速排序是資訊學競賽的必備演算法之一。對於快速排序不是很瞭解的同學可以自行上網查詢相關資料,掌握後獨立完成。(C++C++選手請不要試圖使用STL,雖然你可以使用s