算法竞赛进阶指南--快速幂,求a^b mod p
生活随笔
收集整理的這篇文章主要介紹了
算法竞赛进阶指南--快速幂,求a^b mod p
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
// 快速冪,求a^b mod p
int power(int a, int b, int p) {int ans = 1;for (; b; b >>= 1) {if (b & 1) ans = (long long)ans * a % p;a = (long long)a * a % p;}return ans;
}// 64位整數(shù)乘法的O(log b)算法
long long mul(long long a, long long b, long long p) {long long ans = 0;for (; b; b >>= 1) {if (b & 1) ans = (ans + a) % p;a = a * 2 % p;}return ans;
}// 64位整數(shù)乘法的long double算法
long long mul(long long a, long long b, long long p) {a %= p, b %= p; // 當(dāng)a,b一定在0~p之間時,此行不必要。long long c = (long double)a * b / p;long long ans = a * b - c * p;if (ans < 0) ans += p;else if (ans >= p) ans -= p;return ans;
}
總結(jié)
以上是生活随笔為你收集整理的算法竞赛进阶指南--快速幂,求a^b mod p的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么将安卓4g变5g图标
- 下一篇: 『ACM-算法-图论』算法竞赛进阶指南-