Propósito de multiplicação rápida: calcular a * b% mod, e a * b é maior do que long long.
Princípio básico: A velocidade de cálculo e adição em um computador costuma ser muito mais rápida do que a da multiplicação, e multiplicação rápida consiste em decompor a * b em polinômios e adicioná-los por meio da lei distributiva da multiplicação.
Pegue uma data: 20 * 13, converta 13 em binário 1101, então é 20 * 2 ^ 0 + 20 * 2 ^ 2 + 20 * 2 ^ 3. (Semelhante ao poder rápido)
ll quick_mulitiply(ll a,ll b,ll mod) {
ll res=0;
while(b) {
if(b&1) res=(res+a)%mod;
a=(a+a)%mod;
b>>=1;
}
return res;
}