a^b
time limit:1000ms
memory limit:65535kb
64bit io format:
description
求a的b次方,取模mod(1<=a,b,mod<=1e18)
input
多組輸入,每組資料一行,3個正整數,分別為a,b,mod
output
每組資料輸出一行,為答案
sample input
2 10 100000005 100 1
0 2 37
sample output
102400//模版題,主要是考慮到1e18的巨大,普通的快速冪會爆ll 所以在相乘的地方用上快速乘,避免爆ll。
#include"cstdio"long long mod_mul(long long a,long long b,long long p)
return r;
}long long mod_pro(long long a,long long b,long long p)
return r;
}int main()
return 0;
}
快速冪 快速乘
直接求解,需要迴圈b次。思路 將b轉化為二進位制。對應為1的次數的冪保留,只需要將保留的冪的結果進行乘積就是a b。class solution def fast self,a,b b bin b 2 res 1for i in b 1 if i 1 res res a a a return res...
快速乘,快速冪
老是忘記還是寫下來記錄一下 快速乘,和快速冪都是防止爆int,或long long,如果爆longlong可以選擇兩者結合,或者使用 int128 上網搜了還是不懂 例題 include iostream using namespace std int main b b 2 a a a m cout...
快速冪 快速乘
快速冪等演算法都是基於二進位制優化的演算法,本文不做過多敘述,在此只是留下模板,並介紹 o 1 快速乘 int qpow int a,int b,int p define qword long long qword qmul qword a,qword b,qword p 利用 a b pmod p...